允许将python代码注入正在运行的python进程中的工具/库。
hypno的Python项目详细描述
炒作
允许将python代码注入正在运行的python进程中的工具/库。在
安装
pip install hypno
源代码发行版和manylinux1
轮子在每个版本中都被升级到pypi。在
用法
CLI
^{pr2}$API
fromhypnoimportinject_pyinject_py(pid,python_code)
示例
此示例运行一个python程序,该程序打印其pid,然后附加到新创建的进程和 使用hypno为它注入另一个打印语句。在
python -c "import os, time; print('Hello from', os.getpid()); time.sleep(0.5)"&\ hypno $!"import os; print('Hello again from', os.getpid())"
工作原理
我们使用pyinjector库作为一个原语,允许我们注入任意 代码到进程中,因为它使用简单,可以很容易地安装在大多数linux机器上。在
pyinjector需要一个.so
来注入,因此我们编译了一个最小的库
作为C扩展。该库在初始化时调用PyRun_SimpleString
。在
为了允许多次注入一个进程,注入的库必须为每次注入具有唯一的路径。 我们每次打电话都要拷贝图书馆。在
因为我们不希望每次注入都重新编译库来替换执行的字符串,
我们已经控制了注入库的路径,我们对注入的python代码进行了编码
进入注入库的路径。加载注入的库时,它会找到自己的名称
使用dladdr
并从中解析python代码。在
- 项目
标签: