PC의 장치 별 실제 메모리를 통해 메모리 매핑 장치에 액세스하고 있습니다. 이것은 특정 물리적 주소를 프로세스 주소 공간의 선형 메모리에있는 포인터로 매핑하는 드라이버를 사용하여 수행됩니다.Windows에서 실제 주소 액세스 차단
특정 물리적 주소를 차단하고 다른 프로세스 나 장치가이 실제 주소에 액세스하지 못하도록하는 방법이 있는지 알고 싶었습니까?
실제 주소를 선형 주소로 매핑하는 것은 타사 드라이버 인 TVicHW32을 사용하여 수행됩니다.
편집 : 다른 플래그로 내 응용 프로그램의 2 인스턴스를 실행하면 시나리오를 재현 할 수 있습니다. 두 인스턴스 모두 프로세스의 메모리 공간의 일부가 아닌 동일한 특정 물리적 메모리에 액세스 할 수 있습니다.
내 문제는 내가 누가 물리적 주소에 액세스하는지 제어하지 않는다는 것입니다. 나는 프로세스 만 제어하지만 다른 프로세스 나 장치 드라이버는 동일한 물리적 주소에 액세스합니다. – Eldad
오, 죄송합니다. 나는 당신이 드라이버를 수정할 수 없다는 점을 인정하지 않았습니다. 그래서 일은 훨씬 더 어렵습니다. (작은) 희망은 다른 사용자의 프로세스가 드라이버에 의해 노출 된 public 객체에 대한 액세스 (즉, CreateFile에서 디바이스에 펜을 사용하는 이름)에 대한 액세스를 제한함으로써 드라이버가 제어하는 디바이스에 액세스하는 것을 방지하는 것입니다. –
하지만 이것은 매우 제한된 해결책이며 전혀 그렇지 않습니다. 어쨌든 다른 장치 드라이버가 장치의 상태를 잘못 변경하는 것을 막을 수는 없습니다. 잘못된 커널 드라이버는 어떤 종류의 나쁜 일도 할 수 있습니다. ( 몇 년 전에 ISA 카드를 개발하는 동안 비슷한 문제가 발생했습니다. 내 장치에 쓰기. 나는 칩 선택 신호를 CPU의 NMI 라인에 연결해야했기 때문에 카드의 메모리가 액세스되었을 때 저레벨 디버거로 NMI 이벤트를 가로 챌 수 있었다. –