2012-04-06 103 views
2

在Windows中,內核驅動程序可以執行諸如鎖定內存來備份虛擬地址範圍(MMProbeandLockPages)的操作。但我找不到一種方法來實際驗證虛擬地址對於特定進程是否有效。換句話說,內核驅動程序是否有任何方法檢查給定虛擬頁面是否包含在給定進程的頁表中?Windows驅動程序可以訪問進程的頁表嗎?

回答

0

如果驅動程序未在進程上下文中運行,則必須先調用KeStackAttachProcess。

然後,您可以在try/except塊內執行ProbeForRead或ProbForWrite。例如,請參閱處理WinDDK示例中的src \ general \ ioctl \ wdm \ sys \ sioctl.c中的IOCTL_SIOCTL_METHOD_NEITHER。

+0

我假設司機需要記住,該地址在探測時可能有效,但之後可能立即失效? – 2012-04-26 01:14:47

+0

哈里約翰斯頓:是的。任何讀或寫都應該在同一個try/except塊中,並且IRQL應該是PASSIVE。 – glagolig 2012-04-26 02:13:26

相關問題