我试图通过访问 Fedora 中的 /dev/mem 设备来访问物理内存,但只有我可以访问 /dev/mem 的前 1MB。我尝试在 /etc/default/grub 文件中设置 strict_devmem=0,但问题并没有解决。有人可以告诉我如何通过 /dev/mem 访问所有物理内存吗?
答案1
在不同的发行版或内核版本中,Linux 上的内存转储可能有所不同。以前使用的内存设备 ( /dev/mem
) 随着时间的推移变得越来越受限制,以避免恶意进程直接访问内核内存。CONFIG_STRICT_DEVMEM
内核版本 2.6 及更高版本为此引入了内核选项。因此,您需要使用 Linux 内核模块来获取内存。
以下是我收集的有关该主题的一些信息。
查看 GitHub 项目微机:
此模块创建/dev/fmem设备,可用于转储物理内存,不受限制
/dev/mem
(1MB/1GB,取决于发行版)
另一种选择是 酸橙:
可加载内核模块 (LKM),允许从 Linux 和基于 Linux 的设备(例如 Android)获取易失性内存。这使得 LiME 独一无二,因为它是第一个允许在 Android 设备上进行完整内存捕获的工具。它还最大限度地减少了获取过程中用户和内核空间进程之间的交互,这使得它能够生成比其他专为 Linux 内存获取而设计的工具更可靠的内存捕获。
Lime 支持较新版本的 Linux 内核,并且公开和获取内存的技术的侵入性更低。