python跨版本字节码反汇编和封送例程
xdis的Python项目详细描述
xdis
跨python字节码反汇编程序、字节码和幻数操作包
简介
pythondis模块允许您从 正在运行的python版本。但是字节码呢 不同的版本?
这就是这个包裹的目的。它可以“封送加载”python 来自不同版本python的字节码。命令行程序 pydisasm将显示使用python 3.6反汇编的反汇编输出 习俗。
另外,如果需要修改和编写字节码,这里的例程可以 帮帮忙。有一些例程可以打包和解包只读元组 在python的代码类型中。对于Python2和3之间的互操作性,我们 提供我们自己的代码类型版本,并且我们为 减少编写字节码文件的繁琐。
这个包还具有python字节码魔术的广泛知识。 数字,包括pypy和其他数字,以及如何从 系统系统信息 神奇的价值。
所以如果你想写一个跨版本的汇编程序,或者 字节码级优化器这个包可能也很有用。此外 对于dis提供的指令分类,我们有 在这种情况下有用的附加类别 字节码优化器。
这里的程序接受python 1.3到3.7版本的字节码,或者 所以。代码需要Python2.4或更高版本,并且已经在 运行许多python版本的python。
通过eggs或 在github中使用git的python-2.4分支。
安装
它使用setup.py,因此遵循标准的python例程:
pip install -r requirements.txt pip install -r requirements-dev.txt python setup.py install # may need sudo # or if you have pyenv: python setup.py develop
还提供了gnu makefile,因此make install
(可能是根文件或
sudo)将执行上述步骤。
测试
make check
已经添加了一个gnu makefile来平滑运行右边的设置 命令,并从最快到最慢运行测试。
如果安装了remake,则可以看到所有任务的列表
包括通过remake --tasks
进行的测试。
使用量
运行
./bin/pydisasm -h
使用帮助。
作为dis的替代品
xdis还提供了一些支持,作为 python库dis 模块。当您希望使用改进的api时,这可能是可取的 从python 3.4或更高版本的早期python。
例如:
>>> # works in Python 2 and 3 >>> import xdis.std as dis >>> [x.opname for x in dis.Bytecode('a = 10')] ['LOAD_CONST', 'STORE_NAME', 'LOAD_CONST', 'RETURN_VALUE']
对于格式化的 反汇编或如何显示编译器标志。我们希望你 找到xdis输出更多信息。
另见
- https://github.com/rocky/python-uncompyle6:python字节码分解
- https://github.com/rocky/python-xasm:python字节码汇编程序