探索RAM内容


12

我正在使用Redis数据库,并想探索应用程序正在使用的RAM的内容。

我觉得为什么要这样做的解释比我要问的问题更有意义。

Redis是一个简单的键值存储,用于存储二进制数据。我认为这是探索诸如编码之类的好地方,并且对我来说很有趣,例如在RAM上浏览以查找二进制数据集,在进行诸如查找简单模式之类的事情;也许探索编写在RAM中搜索的婴儿查询语言的想法。

阅读SICP中有关查询语言的章节后,我就有了这个想法。

关于从哪里开始有什么想法?最初,我想向系统询问“请给我运行该应用程序的地址空间”。

Answers:


7

您可以使用gdb访问进程的内存。

另外,您应该看一下“ / proc”文件系统-它包含每个进程的伪文件。其中一些可能包含有趣的信息


7

cat /proc/[pid]/maps 根据proc联机帮助页。

看起来像你想要的。如果需要pid,请从ps或任何其他工具中获取它。

那就是寻找使用中的地址空间。去年defcon的一位研究员在Linux上实现了createremotethread。因此,您可以这样做...然后以这种方式读取任意内存。

感谢psusi用于指出pmap -x [pid]更容易阅读。


3
请注意,将pmap这些信息格式化,以便于人类阅读。
psusi 2012年

6

使用调试器,这就是它们的用途。

如果您想自己动手,一切都会进行ptrace

您可以在其中看到进程的内存映射(内存的目录),/proc/$pid/maps并从中读取整个内存的内容/proc/$pid/mem。您不能正常打开后一个文件,请参阅如何在Linux下从/ proc / $ pid / mem中读取?


1
您对我的某些问题提供了极大的帮助。您是否建议阅读任何与Linux OS相关的书籍或特别有趣的Web文章?
MageProspero 2012年
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.