【发布时间】:2012-01-01 15:01:43
【问题描述】:
我上下搜索,但找不到适用于 Python 2.7 .pyc 的反编译器。有人知道适用于 Python 2.7 的吗?谢谢
【问题讨论】:
标签: python python-2.7 decompiler
我上下搜索,但找不到适用于 Python 2.7 .pyc 的反编译器。有人知道适用于 Python 2.7 的吗?谢谢
【问题讨论】:
标签: python python-2.7 decompiler
如果有人仍在为此苦苦挣扎,就像我今天整个上午一样,我找到了一个适合我的解决方案:
安装说明:
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
反编译器主要以 cmets 的形式添加了一些噪音,但是我发现它出奇地干净并且忠实于我的原始代码。您必须在已恢复文件末尾附近删除以 +++ 开头的一小行文本才能运行您的代码。
【讨论】:
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/
Issue 8 说它支持 2.7:http://code.google.com/p/unpyc/updates/list
更新 (2013-09-03) - 如 cmets 和其他答案中所述,您应该查看 https://github.com/wibiti/uncompyle2 或 https://github.com/gstarnberger/uncompyle 而不是 unpyc。
【讨论】:
uncompyle6 是一个更新的工具,支持 Python 2.7 和 3.x - 请参阅 this answer 了解更多信息
这是一个反编译pyc文件的好工具。
它是我编写的,支持python 1.0 - 3.3
它基于 uncompyle2 和 decompyle++
【讨论】:
Ned Batchelder 发布了一个short script,它将解组 .pyc 文件并反汇编其中的任何代码对象,因此您将能够看到 Python 字节码。
看起来对于较新版本的 Python,您需要注释掉设置 modtime 的行并打印它(但不要注释设置 moddate 的行)。
将其转回 Python 源代码会有些困难,尽管理论上是可行的。我假设所有这些适用于旧版本 Python 的程序都可以做到这一点。
【讨论】: