反编译Python 2.7 .pyc

时间:2011-11-18 21:25:37

标签: python python-2.7 decompiler

我上下搜索,但找不到适用于Python 2.7 .pyc的反编译器。有没有人知道哪一个适用于Python 2.7?感谢

5 个答案:

答案 0 :(得分:84)

如果有人还在努力解决这个问题,就像我今天早上一样,我找到了一个适合我的解决方案:

Uncompyle

安装说明:

git clone https://github.com/gstarnberger/uncompyle.git
cd uncompyle/
sudo ./setup.py install

安装程序后(注意:它将安装到系统范围内可访问的Python软件包,因此它应该在您的$PATH中),您可以像这样恢复Python文件:

uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py

反编译器主要以评论的形式添加一些噪音,但我发现它非常干净且忠实于原始代码。您必须在恢复文件末尾附近删除以+++开头的一小段文本才能运行代码。

答案 1 :(得分:26)

Decompyle ++(pycdc)似乎适用于一系列python版本:https://github.com/zrax/pycdc

例如:

git clone https://github.com/zrax/pycdc   
cd pycdc
make  
./bin/pycdc Example.pyc > Example.py

答案 2 :(得分:15)

更新(2019-04-22) - 听起来你现在想要使用uncompyle6而不是我原先提到的答案。

这听起来很有效:http://code.google.com/p/unpyc/

问题8说它支持2.7:http://code.google.com/p/unpyc/updates/list

更新(2013-09-03) - 正如评论和其他答案中所述,您应该查看https://github.com/wibiti/uncompyle2https://github.com/gstarnberger/uncompyle而不是取消。

答案 3 :(得分:11)

这是一个反编译pyc文件的好工具。

它由我编码并支持python 1.0 - 3.3

它基于uncompyle2和decompyle ++

http://sourceforge.net/projects/easypythondecompiler/

答案 4 :(得分:3)

Ned Batchelder发布了一个short script,它将解组.pyc文件并反汇编其中的任何代码对象,这样您就可以看到Python字节码。 看起来对于较新版本的Python,您需要注释掉设置modtime的行并打印它(但不要注释设置moddate的行。)

尽管理论上可行,但将其转回Python源会稍微困难一些。我假设所有这些适用于旧版Python的程序都可以做到这一点。