是否有人建议(非商业)软件反编译“字节码” Python(.pyc)文件?

我发现的所有内容似乎都崩溃了...

评论

尝试过uncompyle2吗?

我还没有阅读它,所以我不会作为答案,但是编译中的问题课程:从Python到x86 Assembly可能有用。链接

亚历克斯,你杀了我。我巨大的“阅读”堆栈的另一个PDF。看起来很有趣,谢谢;)

什么是分析Python字节码的工具的可能重复项?

uncompyle6现在已取代uncomplye2。归功于其他有助于我学习的答案:stackoverflow.com/a/14808336/10278

#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兼容。


/>