探索 RAM 内容

Hea*_*ray 15 linux memory

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

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

Redis 是一个简单的键值存储,用于存储二进制数据。我认为这将是一个探索编码之类的好地方,我会很有趣地做一些事情,比如浏览 RAM 寻找二进制数据集,做一些事情,比如寻找简单的模式;也许探索编写在 RAM 中搜索的婴儿查询语言的想法。

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

关于从哪里开始的任何想法?最初,我想向系统询问“请给我此应用程序运行所在的地址空间”。

Rob*_*ans 10

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

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

该地址查找正在使用的地址空间。去年 defcon 的一位研究员在 linux 上实现了 createremotethread。所以你可以这样做......然后以这种方式读取任意内存。

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

  • 请注意,`pmap` 格式化了此信息,因此它更易于人类阅读。 (3认同)

小智 10

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

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


Gil*_*il' 7

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

如果你想推出自己的,一切都会通过ptrace

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