用windbg实现虚拟地址到物理地址转换(Converting Virtual Addresses to Physical Addresses)
来源:互联网 发布:java桌面开发框架fx2 编辑:程序博客网 时间:2024/05/16 13:55
转运四方海淘网 : zysfht.com
原文地址:http://blog.csdn.net/hjl243632044/article/details/7656685
本文将用一个小例子说明如何在32位cpu下手工将虚拟地址转换内存中的物理地址。(32位xp下测试通过,32位win7不知何因就是不行。大牛若知,请指点,不胜感激。)
首先补充下理论知识:
验证思路如下:首先用windbg找到"当前测试进程"中变量P的虚地址;然后再打开个windbg进入内核模式,查找当前测试进程的DireBase(页目录项);最后利用虚地址通过计算找到对应变量在物理地址中的值。若此值和最初程序中所放的值一样,则说明查找成功。
所用程序源码如下:
#include "stdafx.h"#include<iostream>#include"windows.h"using namespace std;int p=9;int main(int argc, char* argv[]){cout<<p<<endl; Sleep(1000000); return 0;}
编译后生成dsds.exe和dsds.pdb(符号文件),将其COPY到symbols文件夹中。
运行程序后,打开windbg,捕捉该进程(Attach to a Process),加载符号文件;勾选Reload,然后OK。
执行 x dsds!p 和dd 00475dc0 这两个命令。(dd:查看虚地址为00475dc0的逻辑地址里存放的值。这个功能是windbg帮助我们实现的,待会我们就是要手工在内存中找到这个值)。(从图中可以看出,实际内存中确实放的是9)
.formats 将虚地址00475dc0 转换为2进制:
另外打开一windbg,进入内核模式(Kernel Debugging----local),!process 0 0 列出当前进程在内核中的信息(记着reload 符号文件):
接下来三步操作如图所示:
- 用windbg实现虚拟地址到物理地址转换(Converting Virtual Addresses to Physical Addresses)
- ARM Android内核虚拟地址到物理地址的转换实例 (ARM Android kernel virtual address to physical address)
- Virtual, Linear, and Physical Addresses
- 实践使用WinDBG从虚拟地址转换到物理地址
- the mapping between virtual addresses and physical addresses
- windbg:虚拟地址转换为物理地址
- How to translate virtual to physical addresses through /proc/pid/pagemap
- windbg调xp的calc(手工虚拟地址到物理地址转换练习)
- MIPS虚拟地址到物理地址转换过程
- #SC2440虚拟地址到物理地址的转换
- 虚拟地址到物理地址的转换
- 虚拟地址到物理地址的转换
- 7.7 Converting Meaningful Addresses to Longitude and Latitude
- 通过windbg查看虚拟地址到物理地址的映射过程
- 虚拟地址到物理地址
- 启用PAE机制下虚拟地址到物理地址的转换
- 启用PAE机制下虚拟地址到物理地址的转换
- Linux 内核虚拟地址到物理地址转换讨论
- 常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全
- web测试总结
- 分享jQuery的5个动态过滤插件
- 你刚才在淘宝上买了一件东西【技术普及贴】
- 内存池
- 用windbg实现虚拟地址到物理地址转换(Converting Virtual Addresses to Physical Addresses)
- 动态时间归整/规整/弯曲(Dynamic time warping,DTW)
- 分布式计算概括
- vs2010 qtadmin配置qt路径时提示错误“This Qt version uses an unsupported makefile generator ”
- 分享一个基于事件时间线的Javascript类库-Chronoline
- vlc的应用之八:MFC调用libvlc.dll
- android Home键的屏蔽,截取
- 网页消重算法(via北大天网课题组)
- VC++中注意申请数组之后,一定要初始化,即便每次都会重新申请地址