我上下搜索,但找不到适用于Python 2.7 .pyc的反编译器。有没有人知道哪一个适用于Python 2.7?感谢
答案 0 :(得分:84)
如果有人还在努力解决这个问题,就像我今天早上一样,我找到了一个适合我的解决方案:
安装说明:
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/uncompyle2或https://github.com/gstarnberger/uncompyle而不是取消。
答案 3 :(得分:11)
这是一个反编译pyc文件的好工具。
它由我编码并支持python 1.0 - 3.3
它基于uncompyle2和decompyle ++
答案 4 :(得分:3)
Ned Batchelder发布了一个short script,它将解组.pyc文件并反汇编其中的任何代码对象,这样您就可以看到Python字节码。
看起来对于较新版本的Python,您需要注释掉设置modtime
的行并打印它(但不要注释设置moddate
的行。)
尽管理论上可行,但将其转回Python源会稍微困难一些。我假设所有这些适用于旧版Python的程序都可以做到这一点。