允许将python代码注入正在运行的python进程中的工具/库。

hypno的Python项目详细描述


炒作

PyPI versionPyPI Supported Python VersionsGitHub licenseTests (GitHub Actions)

允许将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代码。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
插入记录时的java JDBC nullPointerException   java如何更新线程中的引用和活动?   用JAVA将emoji写入XML文件   Java用带问号的新行正则表达式拆分字符串   java当重启倒计时时,它就完成了工作   简单WebSocket客户端无法连接到tomcat java WebSocket   java我的log4j配置中缺少了什么。冬眠cfg。注释。版本要求?   javascript将java方法转换为jQuery函数   java可以通过编程方式水平或垂直翻转drawable吗?   java为什么在Eclipse中出现以下代码错误:“编辑器不包含主类型”?   java如何从回调方法执行AsyncTask?   java删除IntelliJ中的“Project SDK”配置   java如何在AspectJ中访问对象的名称?   java无法访问按钮   java是不断增长的WeakHashMap,还是清除了垃圾键?   java如何使用lombok@Builder和@Data初始化ArrayList   java滚动不显示   java JScrollpane不滚动大内容