我有一个封闭源代码的第 3 方程序,我希望能够
- 知道分配给程序的内存
- 访问该内存(只读很好)
vmmap(1)、heap(1) 和leaks(1) 之类的实用程序似乎与我需要的功能相似,但我无法在任何地方找到它们的源代码(OS X 版本),也无法弄清楚它们是如何使用的工作。最好这一切都在用户空间中完成,可能以 root 身份运行,如果可以避免的话,我不想编写内核代码来绕过内存保护。
我尝试使用共享内存将我想要读取的地址作为第二个参数传递给 shmat(2),但这最终没有成功(并且可能不是它的预期用途和/或不好的做法)并且仍然让我没有办法确定我正在寻找的内存(拥有内存的程序必须向我报告它的地址)。
有没有办法只禁用某个程序的内存保护,以便它在尝试读/写分配给不同进程的内存时不会出现段错误?有没有更好的方法不会让错误严重破坏我的整个系统?
这是如何实现的?