在C或C++ (windows)中,如何通过给出物理(而非虚拟)地址来读取内存?这意味着不需要通过虚拟内存系统(mmu表),并且特定于一个进程。
我已经知道API ReadProcessMemory
,它从ram读取(大多数训练者使用),但它只用于特定的过程。
我在MSDN上搜索,发现Device\PhysicalMemory似乎提供了这样的可能性,但我没有找到实际的例子,而且这个功能似乎已经被Windows service pack关闭(为了修复一些漏洞)。
我知道这是可能的,因为WinHex做到了(如果你选择“工具”>“打开内存”>“物理内存”)。然后,它将显示内存内容从0x00000000到your_ram_size,就像你打开一个传统的文件一样。它需要管理员权限,但没有要安装的驱动程序(这意味着WinHex在用户模式下安装)。
编辑:添加os的相关信息。
https://stackoverflow.com/questions/8403610
复制相似问题