43

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

4

5 回答 5

85

万一有人还在为此苦苦挣扎,就像我今天整个上午一样,我找到了一个适合我的解决方案:

解压缩

安装说明:

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

安装程序后(注意:它将安装到您的系统范围内可访问的 Python 包中,因此它应该在您的$PATH.

uncompyler.py thank_goodness_this_still_exists.pyc > recovered_file.py

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

于 2012-04-06T18:31:16.750 回答
25

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

例如:

git clone https://github.com/zrax/pycdc   
cd pycdc
make  
./bin/pycdc Example.pyc > Example.py
于 2012-08-24T20:41:58.233 回答
21

更新(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而不是 unpyc。

于 2011-11-18T21:51:22.850 回答
11

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

它是我编写的,支持 python 1.0 - 3.3

它基于 uncompyle2 和 decompyle++

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

于 2014-01-28T19:04:07.387 回答
3

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

将其转回 Python 源代码会有些困难,尽管理论上是可能的。我假设所有这些适用于旧版本 Python 的程序都是这样做的。

于 2011-11-18T21:33:10.407 回答