您的位置:首页 > 其它

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

2015-06-02 21:57 387 查看
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.exePROCESS 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            1200   000000 000  01010 1001   0011 11110000对应的16进制0    0           A9          3f0lkd> !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 00000000lkd> !dd 8dcf9000#8dcf9000 81ed8867 00000000 56871867 00000000#8dcf9010 89bce867 00000000 d37bf867 00000000#8dcf9020 83d72867 00000000 339c5867 00000000#8dcf9030 00000000 00000000 00000000 00000000lkd> !dd 81ed8000+a9*8#81ed8548 8e1ba867 80000000 c583e867 80000000#81ed8558 7e643867 80000000 b9f84867 80000000#81ed8568 89d05867 80000000 1c2c6867 80000000#81ed8578 87987867 80000000 10688867 80000000lkd> !dd 8e1ba000+3f0#8e1ba3f0 00350039 00370032 00350039 00370032#8e1ba400 00350039 00370032 00000000 00000000#8e1ba410 00000000 00000000 00000000 00000000#8e1ba420 00000000 00000000 00000000 00000000lkd> !du 8e1ba3f0 #8e1ba3f0 "952795279527"

得知地址内存8e1ba3f0 对应notepad虚拟内存000a93f0

注意显示物理内存的!dd, 并且取到的 目录项要去掉低 12的标志位

文章示例的是开启PAE,页面大小是4k的情况,其他的分页方式命令有所不同

具体看intel指令手册 3a的介绍
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: