2012-04-06 2 views
2

В Windows драйвер ядра может делать такие вещи, как фиксация памяти для резервного копирования диапазона виртуальных адресов (MMProbeandLockPages). Но я не мог найти способ проверить, действительно ли виртуальный адрес действителен для определенного процесса. Другими словами, есть ли способ для драйвера ядра проверить, содержится ли данная виртуальная страница в таблице страниц для данного процесса?Может ли драйвер Windows получить доступ к таблице страниц процесса?

ответ

0

Если драйвер не работает в контексте процесса, вы должны сначала вызвать KeStackAttachProcess.

Затем вы можете сделать ProbeForRead или ProbForWrite внутри try/except block. Например, см. Обработку IOCTL_SIOCTL_METHOD_NEITHER в src \ general \ ioctl \ wdm \ sys \ sioctl.c в образцах WinDDK.

+0

Предполагаю, что водитель должен помнить, что адрес может быть действительным на момент его исследования, но впоследствии станет недействительным, возможно, немедленно? –

+0

Гарри Джонстон: правда. Любое чтение или запись должно быть в одном и том же блоке try/except, а IRQL должен быть PASSIVE. – glagolig

Смежные вопросы