作为一个个人项目,我正在 Haskell 中编写一个小工具来模仿扫描内存。
它
- 扫描 /proc/pid/maps 以获取虚拟内存区域
- 扫描 /proc/pid/mem 以提取具有给定值的内存区域
它仍处于开发早期,所以我仍然非常依赖 cabal repl,它允许我修改我的代码,然后立即进入交互式 ghci 环境来运行它。不幸的是,由于读取 /proc/pid/mem 需要 sudo 权限,因此我需要以 sudo 身份运行 cabal repl。强烈建议不要这样做。我认为每次进行微小更改时都必须构建整个代码的替代方法是更改特定 /proc/pid/mem 的权限,以便任何用户都可以拥有此文件的读取权限。我将在这个特定文件上进行所有调试。
不幸的是,当我尝试跑步时
sudo chmod 644 mem
我得到了结果:chmod: changing permissions of 'mem': Operation not permitted
难道这个想法只是徒劳吗?
非常感谢!
答案1
您无法更改 的权限/proc/…/mem
,它们是由内核强制执行的。
对于您的开发工作,您应该能够使用您的用户正在运行的任何进程;您将能够访问/proc/…/mem
以您的用户身份运行的进程。 (scanmem
也可以这样做——如果你给它一个以你的用户身份运行的进程的 pid,它会分析它,而不需要以 root 身份运行)。如果您尝试扫描所有进程,请跳过那些mem
文件不可读的进程。