我上下搜索,但找不到适用于 Python 2.7 .pyc 的反编译器。有人知道适用于 Python 2.7 的吗?谢谢
5 回答
万一有人还在为此苦苦挣扎,就像我今天整个上午一样,我找到了一个适合我的解决方案:
安装说明:
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
反编译器主要以注释的形式添加了一些噪音,但是我发现它非常干净并且忠实于我的原始代码。您必须在恢复的文件末尾附近删除以 +++ 开头的一小行文本才能运行您的代码。
Decompyle++ (pycdc) 似乎适用于一系列 python 版本: https ://github.com/zrax/pycdc
例如:
git clone https://github.com/zrax/pycdc
cd pycdc
make
./bin/pycdc Example.pyc > Example.py
更新(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而不是 unpyc。
这是一个反编译pyc文件的好工具。
它是我编写的,支持 python 1.0 - 3.3
它基于 uncompyle2 和 decompyle++
Ned Batchelder 发布了一个简短的脚本,它将解组 .pyc 文件并反汇编其中的任何代码对象,因此您将能够看到 Python 字节码。看起来对于较新版本的 Python,您需要注释掉设置modtime
并打印它的行(但不要注释设置的行moddate
)。
将其转回 Python 源代码会有些困难,尽管理论上是可能的。我假设所有这些适用于旧版本 Python 的程序都是这样做的。