3
在調試Windows(XP SP3)機器的內核時,我想查找用戶模式地址的頁面保護(實際上只是爲了檢查它是否爲「否」 - 執行頁面)。當內核調試 - 查找用戶模式地址的頁面保護
擴展!vprot(這樣做)在內核調試時不起作用。
我試圖改變到這個用戶模式的地址空間(使用'.process/i'),然後在地址上調用!pte。 但是有時候,PTE條目是無效的,因爲它被換出(我想)。
有什麼建議嗎?
在調試Windows(XP SP3)機器的內核時,我想查找用戶模式地址的頁面保護(實際上只是爲了檢查它是否爲「否」 - 執行頁面)。當內核調試 - 查找用戶模式地址的頁面保護
擴展!vprot(這樣做)在內核調試時不起作用。
我試圖改變到這個用戶模式的地址空間(使用'.process/i'),然後在地址上調用!pte。 但是有時候,PTE條目是無效的,因爲它被換出(我想)。
有什麼建議嗎?
您可以嘗試VAD和地址的組合:!
0: kd> !process 0 0 calc.exe
PROCESS 89e035f8 SessionId: 0 Cid: 021c Peb: 7ffdd000 ParentCid: 00d4
DirBase: 0aac0200 ObjectTable: e1f587a8 HandleCount: 44.
Image: calc.exe
0: kd> .process /i 89e035f8
使用VAD:
3: kd> !vad 0x1000000
VAD level start end commit
89e02578 (-1) 1000 101e 3 Mapped Exe EXECUTE_WRITECOPY \WINDOWS\system32\calc.exe
3: kd> !vad 0x1014000
VAD level start end commit
89e02578 (-1) 1000 101e 3 Mapped Exe EXECUTE_WRITECOPY \WINDOWS\system32\calc.exe
的問題是,VAD只給你整個頁面的VAD!範圍,這更精確地說是瓦德段的大小。 Obviously頁面在0x1000000 [PE Header]和0x1014000 [.data節]有不同的保護。 !
使用地址:
注意地址命令將映射了很多東西(包括PTE的/ PFNs和心室輔助裝置):
3: kd> !address 0x1000000
Mapping user range ...
Mapping system range ...
Mapping page tables...
Mapping hyperspace...
Mapping HAL reserved range...
Mapping User Probe Area...
Mapping system shared page...
Mapping system cache working set...
Mapping loader mappings...
Mapping system PTEs...
Mapping system paged pool...
Mapping session space...
Mapping dynamic system space...
Mapping PFN database...
Mapping non paged pool...
Mapping VAD regions...
Mapping module regions...
Mapping process, thread, and stack regions...
Mapping system cache regions...
使用 '-v' 和「-Map '選項:
3: kd> !address -v -map 0x1000000
PDE: c0600040 [contains 20b9a867]
Page Frame Number: 20b9a, at address: 00000000
Page Location: 6 (ActiveAndValid)
PTE Frame: 00020a98
Attributes: M:Modified,Cached
Usage: PTEs Process 89e035f8 [calc.exe], Entries:22
PTE: c0008000 [contains 20d86025]
Page Frame Number: 20d86, at address: 00000000
Page Location: 6 (ActiveAndValid)
PTE Frame: 00020384
Attributes: P:Prototype,M:Modified,Cached
Usage: MappedFile CA:8a1282e0 [\WINDOWS\system32\calc.exe]
Type: Valid
Attrs: Private,NormalPage,NotDirty,NotDirty1,Accessed,User,NotWritable,NotWriteThrough
PFN: 20d86
Attrs輸出提供了有用的信息。您可能可以在此處使用!pte命令:
3: kd> !pte c0008000
VA 01000000
PDE at C0600040 PTE at C0008000
contains 0000000020B9A867 contains 0000000020D86025
pfn 20b9a ---DA--UWEV pfn 20d86 ----A--UREV
希望能夠解決您的問題。