【问题标题】:How to modify external process using Python如何使用 Python 修改外部进程
【发布时间】: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


【解决方案1】:

也是一个较新的 python 用户。你能用命令行完成所有这些事情吗?如果是这样,那么您可以使用 os.system('[command]') 或 subprocess module。例如,您可以使用pmap command 来获取内存映射。至于2-5,我在那里没有经验。祝你好运。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2015-02-28
    • 2013-08-23
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2016-09-22
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多