您可以编辑“/proc/$pid/mem”中的地址值以反映该进程中的更改吗?

您可以编辑“/proc/$pid/mem”中的地址值以反映该进程中的更改吗?

我想看看是否可以通过直接更改内存来编辑程序运行时的值。

我的思考过程(未经测试)是执行以下操作:

  1. 运行程序。
  2. 打开“系统监视器”应用程序,然后“停止”(不是结束或终止)该程序。
  3. 导航/proc/<ID#>/
  4. chmodmem授予我读写访问权限的文件
  5. mem使用十六进制编辑器进行编辑
  6. 继续计划并查看我的更改是否得到反映。

这是解决这个问题的正确方法吗?

如果没有,我将如何努力实现这一目标?

答案1

根据man 5 proc:

/proc/[pid]/mem
  This file can be used to access the pages of a process's  memory  through  open(2),
  read(2), and lseek(2).

也就是说这个接口只提供使用权。您无法写入或修改此文件:

# chmod +w /proc/$pid/mem
chmod: changing permissions of '/proc/2905/mem': Operation not permitted

如果你想修改正在运行的进程的内存,我能想到的一种方法是将调试器附加到进程,然后使用它来设置变量

相关内容