WinDBG - !vad,列“开始”和“结束”的含义是什么

时间:2018-04-17 15:19:36

标签: memory virtual windbg

我一直在使用WinDBG,我发现这个有用的!vad扩展。 我正在将虚拟地址转换为物理地址。

无论如何,我不明白“开始”和“结束”一栏的含义,这是什么意思?

如果有人能够向我解释,那将是非常棒的。我在其他网站上找不到任何关于它的内容,这可能太明显了......

以下是输出的例子:

kd> !vad 824bc2f8 VAD level start end commit 82741bf8 ( 1) 78000 78045 8 Mapped Exe EXECUTE_WRITECOPY 824ef368 ( 2) 7f6f0 7f7ef 0 Mapped EXECUTE_READ 824bc2f8 ( 0) 7ffb0 7ffd3 0 Mapped READONLY 8273e508 ( 2) 7ffde 7ffde 1 Private EXECUTE_READWRITE 82643fc8 ( 1) 7ffdf 7ffdf 1 Private EXECUTE_READWRITE

摘自:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/-vad

1 个答案:

答案 0 :(得分:1)

VAD =虚拟地址描述符

Vpn =虚拟页码

页面大小= 0x1000通常(使用GetSystemInformation()API)

0x01 st 页面从0x00开始,结束于0x1000 (1 * 0x1000)

0x10 th 页面从0x10开始,结束于0x10000 (0x10 * 0x1000)
依此类推,直到0xffffffff为32位进程地址空间的最大值

这是一个解释

寻找用户模式流程

kd> !process 0 0 explorer.exe
PROCESS 853bbd40  SessionId: 1  Cid: 0754    Peb: 7ffd5000  ParentCid: 072c
    DirBase: 17632000  ObjectTable: 8a0fda28  HandleCount: 687.
    Image: explorer.exe

在上面的结果中设置进程上下文_EPROCESS地址

kd> .process /p /r /P /i 853bbd40
You need to continue execution (press 'g' <enter>) for the context
to be switched. When the debugger breaks in again, you will be in
the new process context.

kd> g    

Break instruction exception - code 80000003 (first chance)
nt!RtlpBreakWithStatusInstruction:
82897d00 cc              int     3

检查cr3是否与Directory Base匹配,以便我们查看 适当背景下的虚拟地址

kd> r cr3
cr3=17632000

kd> !process @$proc 1
PROCESS 853bbd40  SessionId: 1  Cid: 0754    Peb: 7ffd5000  ParentCid: 072c
    DirBase: 17632000  ObjectTable: 8a0fda28  HandleCount: 687.
    Image: explorer.exe
    VadRoot 8497e218 Vads 337 Clone 0 Private 2275. Modified 19. Locked 0.

使用上面结果中的Vadroot检查vad 对于主模块名称,您可以注意到开始

kd> .shell -ci "!vad  8497e218" grep -i explorer.exe
85416348  2       c10       e90      4 Mapped  Exe  EXECUTE_WRITECOPY  \Windows\explorer.exe

检查主模块的peb,看它是否对应!vad-&gt; start * PageSize

kd> .shell -ci "!peb " grep -i c10000.*explorer.exe

          c10000 4ce796f3 Nov 20 15:07:55 2010 C:\Windows\Explorer.EXE

查看结束匹配对应!vad-&gt; End * pageSize

kd> lma 0xc10000 

start    end        module name
00c10000 00e91000   Explorer   (pdb symbols)          

e:\symbols\explorer.pdb\57A762C063044F9C81BC4B8895FBF1AB2\explorer.pdb