2012-04-06 5 views
2

In Windows kann ein Kernel-Treiber Dinge wie das Fixieren von Speicher zum Sichern eines virtuellen Adressbereichs tun (MMProbeandLockPages). Aber ich konnte keine Möglichkeit finden, tatsächlich zu überprüfen, ob eine virtuelle Adresse für einen bestimmten Prozess gültig ist. Mit anderen Worten, gibt es eine Möglichkeit für einen Kernel-Treiber zu überprüfen, ob eine bestimmte virtuelle Seite in der Seitentabelle eines bestimmten Prozesses enthalten ist?Kann ein Windows-Treiber auf die Seitentabelle eines Prozesses zugreifen?

Antwort

0

Wenn der Treiber nicht im Kontext des Prozesses ausgeführt wird, müssen Sie zuerst KeStackAttachProcess aufrufen.

Dann können Sie ProbeForRead oder ProbForWrite innerhalb versuchen/außer Block. Siehe beispielsweise die Behandlung von IOCTL_SIOCTL_METHOD_NEITHER in src \ general \ ioctl \ wdm \ sys \ sioctl.c in WinDDK-Beispielen.

+0

Ich gehe davon aus, dass der Fahrer beachten muss, dass die Adresse zum Zeitpunkt der Prüfung gültig ist, aber danach möglicherweise sofort ungültig wird. –

+0

Harry Johnston: wahr. Jedes Lesen oder Schreiben sollte im selben try/except-Block erfolgen und der IRQL sollte PASSIV sein. – glagolig

Verwandte Themen