windows平台下虚拟地址转换到物理地址

1 打开windbg. 用windbg打开notepad.exe, g

2 随便输入几个字符。 例如 952795279527

3 搜索记事本里面的字符串, 可知输入的字符在记事本的虚拟地址是 000a93f0

4 再打开一个 windbg, 选择本地调试 clrl+k , 确定,输入 !process 0 0 notepad.exe
得到notepad的DirBase, 也就是CR3寄存器


lkd> !process 0 0 notepad.exe
PROCESS 88c6d020  SessionId: 0  Cid: 0b54    Peb: 7ffdf000  ParentCid: 1d58
    DirBase: 0b902b80  ObjectTable: eb072c08  HandleCount:  47.
    Image: notepad.exe



cr4的第5位标示是否开启PAE, 可以用livekd查看cr4寄存器


lkd> .formats 000a93f0  
Evaluate expression:
  Hex:     000a93f0
  Decimal: 693232
  Octal:   00002511760
  Binary:  00000000 00001010 10010011 11110000
  Chars:   ....
  Time:    Fri Jan 09 08:33:52 1970
  Float:   low 9.71425e-040 high 0
  Double:  3.42502e-318

我的电脑开启了pae。 根据上图intel指令手册32位地址分为 2 9 9 12


2    9           9            12
00   000000 000  01010 1001   0011 11110000

对应的16进制
0    0           A9          3f0


lkd> !dd 0b902b80  
# b902b80 8dcf9801 00000000 ddaba801 00000000
# b902b90 7727b801 00000000 9dcb8801 00000000
# b902ba0 b32ae801 00000000 adfaf801 00000000
# b902bb0 97fb0801 00000000 3dbed801 00000000
# b902bc0 7a9e2801 00000000 3e963801 00000000
# b902bd0 67324801 00000000 1b321801 00000000
# b902be0 d5df8801 00000000 7ee79801 00000000
# b902bf0 63d3a801 00000000 ab077801 00000000

lkd> !dd 8dcf9000
#8dcf9000 81ed8867 00000000 56871867 00000000
#8dcf9010 89bce867 00000000 d37bf867 00000000
#8dcf9020 83d72867 00000000 339c5867 00000000
#8dcf9030 00000000 00000000 00000000 00000000

lkd> !dd 81ed8000+a9*8
#81ed8548 8e1ba867 80000000 c583e867 80000000
#81ed8558 7e643867 80000000 b9f84867 80000000
#81ed8568 89d05867 80000000 1c2c6867 80000000
#81ed8578 87987867 80000000 10688867 80000000

lkd> !dd 8e1ba000+3f0
#8e1ba3f0 00350039 00370032 00350039 00370032
#8e1ba400 00350039 00370032 00000000 00000000
#8e1ba410 00000000 00000000 00000000 00000000
#8e1ba420 00000000 00000000 00000000 00000000



lkd> !du 8e1ba3f0 
#8e1ba3f0 "952795279527"

得知地址内存8e1ba3f0 对应notepad虚拟内存000a93f0
注意显示物理内存的!dd, 并且取到的 目录项要去掉低 12的标志位
文章示例的是开启PAE,页面大小是4k的情况,其他的分页方式命令有所不同
具体看intel指令手册 3a的介绍

posted @ 2015-06-02 21:57  tieyan  阅读(1456)  评论(0编辑  收藏  举报