【发布时间】:2011-09-29 22:25:44
【问题描述】:
这里是初学者。我正在尝试弄清楚如何使用 Python 在 linux 系统上修改正在运行的进程。
示例:我有一个 python 程序,它以 PID 作为参数。我的目标是使用此 PID 并获取有关使用该 PID 的运行进程的信息。 (1) 查找它在内存中的位置 (2) 指令指针在哪里 (3) 修改程序,使下一条执行的指令是别的指令 (4) 将指针返回到下一条合法指令 (5) 让原流程按原样执行
我正在尝试开发一个 POC 来展示如何将一小段代码注入到正在运行的进程中,以便将“hello”打印到标准输出而不干扰进程的其余部分。
我查找了 trace 和其他一些模块,但它们似乎都与跟踪当前正在执行的 python 进程有关。还看了 pyhook,但它主要是为了捕获来自键盘等的信号。另外,我查了一下 pygdb。
谁能告诉我一些可能有用的模块,或者一些代码示例。我尝试用谷歌搜索“python 检查进程 PID”等。没有得到任何有用的东西。
非常感谢任何帮助。
谢谢!
【问题讨论】:
-
为什么选择 Python?没有这个障碍,你的任务就够难了。
-
我是 Python 的相对新手,我非常喜欢它,只是想解决一个有趣的问题,希望我能学到一点:-)
-
还从 Paimei 和 Gray Hat Python 中查找了 pydbg。似乎 pydbg 已针对 windows 进行了调整(将进行更多调查)。本书针对 Windows 系统进行了调整,我主要使用的是 Ubuntu/mac。
-
"修改程序,使下一条执行的指令是别的东西" 真的吗?为什么?您将如何超越其他流程的所有权?
-
"第一个版本当然会有点老套"。真的。像这样的操作系统修改(a)停止进程被调度,(b)破坏安全性以覆盖不可写的代码页,然后(c)恢复执行对内核来说是一个惊人的变化。在 Python 中。当我考虑这将是多么复杂时,“黑客式”并不是问题。
标签: python debugging memory process