DiG*_*GMi 3 python macos process
在 Mac OS X Lion 上运行时,是否可以使用 Python 读/写另一个进程内存(不是 Python 进程,并且不使用共享内存或任何东西)?
例如,我想启动 Safari 并监视 Safari 使用的几个内存地址。
在 Windows 中,我找到了很多解决方案,但是可以在 Mac OS X 上完成吗?
是的,它可以。
当然,不是直接调用——但是你可以从 Python 调用任何你想要的 C API,或者通过在 C(或 Pyrex 等)中构建一个 Python 扩展模块,或者通过在 Python 中使用 ctypes。
您要调用的特定 C API 是 task_for_pid 和 mach_vm 方法。这些方法的联机帮助页在现代 OS X 中不存在,但标头有据可查(因此,就这点而言,它是源,随时可用),您可以在线找到其他基于 Mach 的系统的联机帮助页,并且有大量的第三方文档。
有关概念的快速证明,请参阅https://github.com/abernert/pymach。您应该能够使用“python setup.py build_ext --inplace”或“sudo python setup.py install”来构建它,然后查看 test.py 以了解如何使用它的简单示例。
请记住,在现代 OS X 中,除非您是 root,否则您只能访问子进程。解决此问题的最简单方法是让您的脚本实际启动 Safari。或者,如果您不能这样做,只需 sudo 您的脚本。或者,您可以喜欢并使用 ptrace 附加到正在运行的进程,但这留给读者作为练习。
| 归档时间: |
|
| 查看次数: |
2123 次 |
| 最近记录: |