探索 RAM 内容

探索 RAM 内容

我正在使用一个雷迪斯数据库并希望探索应用程序正在使用的 RAM 的内容。

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

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

我是在阅读了这一章后得到了这个想法SICP关于查询语言。

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

答案1

cat /proc/[pid]/maps根据 proc 手册页。

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

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

归功于普苏西指出这pmap -x [pid]更容易阅读。

答案2

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

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

答案3

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

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

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

相关内容