我正在使用 Ubuntu 12.04
我阅读了以下有关如何在 Linux 中访问 RAM 内容的教程......
http://www.rootninja.com/using-dd-to-search-for-strings-in-memory-or-devices/
代码:
dd if=/dev/mem | hexdump -C | grep “string to search for”
因此,我运行代码......
代码:
sudo dd if=/dev/mem | hexdump -C > NAMEOFOUTPUTFILEHERE.txt
然后...它开始输出十六进制代码,几秒钟后,它显示:
dd: reading `/dev/mem': Operation not permitted
2056+0 records in
2056+0 records out
1052672 bytes (1.1 MB) copied, 0.44834 s, 2.3 MB/s
所以基本上..我能够获得大约 3.3 MB 的 RAM 转储内容 - 直到程序停止,并显示“操作不允许”
所以我想知道为什么我不能转储 RAM 的全部内容?这是 Ubuntu 的故意限制,以阻止恶意黑客吗?还是有其他原因?有人知道吗?谢谢
答案1
您的 Ubuntu 安装中的 Linux 内核有一个设置*,它将 RAM 提取限制为 1 MB。
如果您不希望这样做,您可以重新编译没有它的内核(明显的警告:您正在降低安全性!)或者您可以下载并安装取证内核模块 fmem 来解决这个问题。这提供了一个没有任何安全性的 /dev/fmem 设备。
正如 Opello 所说:您也可以strict-devmem=0
在内核命令行中使用。
*:(STRICT_DEVMEM=y
例如参见/boot/config-KERNELVERSION)