(很抱歉我提出了类似的问题,我已经修改了。)
我试着在windows xp上调试一个可执行的pe文件,看看pde和pte在实际系统中是如何工作的。我知道windbg有一些命令来查看细节。好像是这样!pte将能够看到虚拟地址的相应pde和pte。但我遇到了0:000> !pteNo export pte found
我在google上做了一些工作,发现它是一个extension command,但是我没有看到任何关于如何启用这些扩展的描述。似乎除了我,每个人都在直接使用它。
我想知道我错过了什么,但我想不出来。有人能给我一些建议吗?
谢谢。
最佳答案
由于您使用的是xpLocal Kernel Debugging
支持,因此无需编辑引导配置和重新启动
如果您使用的操作系统高于xp,则需要使用/debug on开关编辑操作系统的引导配置,并重新启动以获得本地内核调试支持bcdedit /debug on and reboot
只有这样windbg -kl
才能在大于xp的操作系统上工作
if you don't want to edit your boot configuration download livekd
from sysinternals and use it instead for local kernel debugging
使用此命令行打开windbg
windbg -kl
这将使用提示
lkd>
而不是0:000>
打开windbg。现在您可以使用
!pte
命令将explorer.exe替换为要检查的运行二进制文件的名称(请注意,这不是用户模式,而是二进制文件的内核模式部分)
在下面的示例中,我在windows 7 x86 32位物理机中使用livekd
C:\>livekd
LiveKd v5.40 - Execute kd/windbg on a live system
Sysinternals - www.sysinternals.com
Copyright (C) 2000-2015 Mark Russinovich and Ken Johnson
Launching C:\Program Files\Windows Kits\8.1\Debuggers\x86\kd.exe:
Microsoft (R) Windows Debugger Version 6.3.9600.17298 X86
Copyright (c) Microsoft Corporation. All rights reserved.
kd> !process 0 0 explorer.exe
PROCESS 864b2638 SessionId: 1 Cid: 05f8 Peb: 7ffde000 ParentCid: 05e4
DirBase: 7e28c2c0 ObjectTable: 964ccad8 HandleCount: 1062.
Image: explorer.exe
kd> .process /p /r 864b2638
Implicit process is now 864b2638
Loading User Symbols
kd> !pte explorer
VA 00400000
PDE at C0600010 PTE at C0002000
contains 000000000FFB2867 contains 80000000103F7025
pfn ffb2 ---DA--UWEV pfn 103f7 ----A--UR-V
kd> $$ page table entry contains 103f7025
kd> dc c0002000 l1
c0002000 103f7025 %p?.
kd> $$ the top 5 bytes are page frame nos lets see if the physical page contains MZ
kd> !dc 103f7000 l1
#103f7000 00905a4d MZ.......L`...ac
kd>