我想看看是否可以通过直接更改内存来编辑程序运行时的值。
我的思考过程(未经测试)是执行以下操作:
- 运行程序。
- 打开“系统监视器”应用程序,然后“停止”(不是结束或终止)该程序。
- 导航
/proc/<ID#>/
chmod
mem
授予我读写访问权限的文件mem
使用十六进制编辑器进行编辑- 继续计划并查看我的更改是否得到反映。
这是解决这个问题的正确方法吗?
如果没有,我将如何努力实现这一目标?
答案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
如果你想修改正在运行的进程的内存,我能想到的一种方法是将调试器附加到进程,然后使用它来设置变量。