-
-
[求助]请问,window c/c++如何获取某一时刻整个物理内存中的数据?
-
发表于:
2016-1-18 22:39
6837
-
[求助]请问,window c/c++如何获取某一时刻整个物理内存中的数据?
试过的方法:
1、使用MmMapIoSpace,将物理内存地址映射成虚拟内存地址,然后访问虚拟内存地址。但是这种方法在访问某些物理地址的时候会使系统崩溃,猜测是因为访问了没有挂载的物理地址。
2、试图遍历虚拟内存空间,这样就需要有一个函数可以探测遍历的当前虚拟内存是否可读,但是没有找到这样的函数。只找到ProbeForRead,该函数只能在内核态判断某一用户态的虚拟内存是否可读,不能用户内核态虚拟地址的判断。并且在64位系统下虚拟地址空间非常大,遍历也不太现实。
3、window系统的睡眠功能的实现是将点击睡眠按钮后的物理内存以及cpu状态信息保存在hiberfil.sys系统文件中,唤醒的时候从hiberfil.sys中恢复出物理内存,和cpu状态。猜测window应该是调用一系列的底层函数,或者undocument函数来完成该功能的,但是在网上没有找到实现方式和原理。
上面三个方法都没走通。。。
请问各路大神有没有什么办法能获取整个物理内存的数据呢?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课