[原创]忙里偷闲中写的一个系统物理/虚拟地址内容查看器
都是老技术,没啥新意。为了方便我在调试中要了解虚拟或物理内存的情况编写的,懒得装WinDbg
的情况下比较方便。程序在gccNTDrvFrame(我以前写的gcc下的NT驱动通用开发包)的基础上扩展,
并且由于直接使用微软“特有”的__try,__except功能方便些,故和VC 2008生成的obj一起连接,此外使用了MASM32V10.0写了关分页传送数据部分的代码。GUI全部用SDK编写,没有用任何图形库。所以程序体积较小(压缩后58KB)。
程序可以在 win2k(SP4)、winXP(SP3)、win2k3(SP1)、win7下使用(因为手上没有vista
和win2k8的系统故无法测试。)但在win7下不要使用关分页机制读写物理内存的功能,否则必蓝!
虽然我作了较多内核中的有效性检查,但是仍不敢保证会在某些情况下造成系统崩溃,所以请尽量不要
在关键机器上使用,造成的损失概不负责哦。:)
程序运行要拥有SE_DEBUG特权和安装驱动权限,在vista或win7下要"以管理员身份运行"。
还是那句老话:本人以人格担保其加载的驱动程序绝对不含有木马、病毒之类的无聊玩意,请各位
放心下载使用,如有bug请跟帖反馈,谢谢。
上图文字看不清楚,再介绍下,我使用了多种方法来读写虚拟或物理地址:
VirtualMem :表示操作的是进程虚拟地址。
CR3 Direct : 通过直接设置CR3寄存器读写进程虚拟地址。
如果没有选择该项表示以 常规的方法KeStackAttachProcess读写进程
虚拟地址。 (虚拟地址读写前,要选择一个进程。),
PhysicalMem:表示操作的是物理地址
CP : 以关分页的方法读写物理地址,一次性最大读取/写入2048字节。
PM R/W LITE : 直接构造PDE的方法读写物理地址,一次性最大读
取/写入4096字节。
如果没有选择以上2项,则以常规方式读写物理地址MmMapIoSpace。
程序暂时做了限制,写入大小一次只能4字节,但函数接口上不止这么多。
NEW :
第3次更新2010.02.07:
增加了对以下OS的兼容性:
windows 2000(SP4) , windows XP(SP3) ,windows 2003(SP1),
windows 7,由于没有环境故没有测试windows vista 和
windows 2008。
mmguy v1.2.9.0 下载地址 :http://hopy.bokee.com/inc/mmguy.7z (50KB)