我发现的所有内容似乎都崩溃了...
#1 楼
您要反编译的是哪个Python版本? Py3k不受很好的支持,但是2.x有很多反编译器。最新的项目之一是:https://github.com/Mysterie/uncompyle2
它在Python 2.7上运行,但支持2.5到2.7的反编译。
请注意,已知一些商业项目使用修改后的Python解释器。修改内容包括:
字节码文件加密
更改操作码值或附加操作码
高度定制的运行时(例如无堆栈Python)
如果您需要处理此问题,则一种方法是将非标准字节码转换为标准字节码,然后使用常规的反编译器(显然,以上项目的人员都使用此反编译器反编译Dropbox代码)。另一个是更改反编译器以直接支持这些版本。
评论
从2018年更新(五年后):uncompyle6现在已取代uncomplye2。归功于其他有助于我学习的答案:stackoverflow.com/a/14808336/10278
– Pestophagous
18年8月30日在17:50
#2 楼
您可能会发现Immunity提供的pyREtic很有用。 BlackHat USA 2010在pyREtic上的演示文稿在这里(YouTube)。反向工程师混淆的Python字节码此工具包允许您
将内存中的对象返回源代码,而无需直接在磁盘上访问字节码。如果磁盘上的应用程序
pyc以多种方式之一被混淆,这将很有用。
#3 楼
我当然使用uncompyle6。免责声明:我正在从事这个项目。我在这里详细介绍了uncompyle6和pycdc。
#4 楼
对于最初的和粗糙的Python字节码反汇编,我将使用Python标准库dis
模块:https://docs.python.org/2/library/dis.html #5 楼
这就是您要寻找的东西,我刚遇到了一个功能全面的Python反编译器,名为“ Easy Python Decompiler”。#6 楼
还有一个开源的Python(.pyc
)反编译器,称为Decompyle ++。 虽然其他项目都取得了不同程度的成功,但Decompyle ++的独特之处在于它寻求支持任何版本的Python中的字节码。
#7 楼
我建议decompyle3
。它可以反编译pyc / pyo文件,并且与python 3兼容。/>
评论
尝试过uncompyle2吗?我还没有阅读它,所以我不会作为答案,但是编译中的问题课程:从Python到x86 Assembly可能有用。链接
亚历克斯,你杀了我。我巨大的“阅读”堆栈的另一个PDF。看起来很有趣,谢谢;)
什么是分析Python字节码的工具的可能重复项?
uncompyle6现在已取代uncomplye2。归功于其他有助于我学习的答案:stackoverflow.com/a/14808336/10278