gpt4 book ai didi

c - 如何从一个程序访问另一个程序的内存

转载 作者:太空狗 更新时间:2023-10-29 16:49:31 26 4
gpt4 key购买 nike

我有一个闭源的第 3 方程序,我希望能够

  • 知道分配给程序的内存是多少
  • 访问该内存(只读即可)

诸如 vmmap(1)、heap(1) 和 leaks(1) 之类的实用程序似乎具有与我需要的类似的功能,但我无法在任何地方(OS X 版本)找到它们的源代码,也无法理解他们是如何工作的。最好,这一切都在用户空间中完成,可能以 root 身份运行,如果可以避免的话,我不想编写内核代码来绕过内存保护。

我尝试使用共享内存将我想要读取的地址作为第二个参数传递给 shmat(2),但这最终没有成功(并且可能不是它的预期用途和/或不良做法)并且仍然让我没有一种确定我正在寻找的内存的方法(拥有内存的程序必须向我报告其地址)。

有没有办法只对某个程序禁用内存保护,这样当它试图读/写分配给不同进程的内存时就不会出现段错误?有没有更好的方法来防止错误严重破坏我的整个系统?

这是如何实现的?

最佳答案

基本上,this guy是对的。

去下载source code伴随this book并查看示例 8-16 的 vm_rw_master.c 以了解工作实现。

参见 http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/对于文档,它有点过时,而且正确性值得怀疑,但它是最好的。

编辑:另请参阅 http://lightbulbone.com/2011/05/dumping-process-memory-on-mac-os-x/ (请注意,拥有您正在尝试读取的内存的任务不需要是尝试进行读取的进程的子进程,您只需要获得适当的授权即可。)

编辑:另请参阅 http://os-tres.net/blog/2010/02/17/mac-os-x-and-task-for-pid-mach-call/一个很好的授权示例。

关于c - 如何从一个程序访问另一个程序的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974261/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com