如何查看RAM存储器的内容?[关闭]


14

有什么办法可以查看RAM存储器的内容吗?从第一个字节到最后一个字节。我想查看操作系统及其上运行的所有进程在RAM中的位置。这可能吗?


1
作为受保护内存环境中的用户进程,您只能访问其虚拟内存空间的用户副本。内核存储器空间,其他用户的虚拟存储器空间以及未使用的物理存储器都受到保护,以防您窥探。另一方面,除非您知道虚拟内存映射,否则物理SDRAM的时间随机快照意义不大。
锯末2012年

随机存取存储器是存储器吗?那么页面分配表呢?
ta.speot.is 2012年


您可能会更高兴使用一些工具来显示内存分配方式,而不是实际查看1和0。
Daniel R Hicks

1
只是出于好奇
Osta 2012年

Answers:


8

您可以使用内核调试器,该调试器将允许“原始”内存访问,例如适用于Windows的SoftICE。您还可以将GDB配置为充当Linux内核调试器。如果可以选择使用虚拟机,则某些虚拟化软件支持将计算机的状态(包括RAM)保存到磁盘,然后可以对其进行进一步分析。但是,应注意,大多数“现代”操作系统都使用地址空间布局随机化(ASLR)。系统的真实物理内存映射被故意碎片化,以帮助缓解各种安全问题和漏洞利用(即堆栈 / 缓冲区溢出)。

但是,对于在现代操作系统中运行的给定程序,只要具有适当的调试符号和调试器,就可以获得给定进程/线程的逻辑内存映射。如果您想要一个整体视图,那么如果软件/硬件使用虚拟内存,情况将变得更加复杂。再次,虽然,如果你从字面上想要的是刚刚的RAM,看到的第一个段落。


9

在Windows上,可以通过对象管理器\Device\PhysicalMemory中的对象访问物理内存的内容。这需要对系统进行内核级访问,这意味着您需要安装一个程序(很可能是内核模式驱动程序)才能访问该对象。

在Linux上,通过读取/dev/mem为,可以直接将物理内存的内容作为二进制数据进行访问root。请参阅什么是/ dev / mem?以及mem(4)有关更多详细信息的手册页。

我不确定为什么需要确定操作系统和进程在物理内存中的位置,但是...


3
实际上,在Windows上,就像RAMMapPhysMem实用程序一样,您可以打开\Device\PhysicalMemory(相当于/dev/kmem)。
user1686'9

1
不再。从Server 2003及更高版本开始,\DevicePhysicalMemory无法从用户模式打开该对象。RAMmap和大多数其他sysinternals工具都包含一个内核模式驱动程序,以完成其部分工作。
杰米·汉拉汉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.