【问题标题】:Decompile Python 2.7 .pyc [closed]反编译 Python 2.7 .pyc [关闭]
【发布时间】:2012-01-01 15:01:43
【问题描述】:

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

【问题讨论】:

    标签: python python-2.7 decompiler


    【解决方案1】:

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

    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
    

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

    【讨论】:

    • 救了我的培根!从现在开始,我将把它添加到我的 virtualenvs 中......
    • 也救了我的培根。在提交到 git 之前,我是一个运行 rm *.py 来清理我的 pyc 文件的天才。但至少它给我的 .pyc 文件留下了一个美丽的讽刺。
    • @Eloff 一个包含 *.pyc 的 .gitignore 文件比在每次提交之前必须注意删除 *.pyc 更容易!可能是您知道这一点并且对拥有一个干净的环境有点痴迷,因为许多程序员往往是:D
    • 感谢分享。必须说服我的老板,隐藏 .py 代码文件是不值得的。现在他相信我了;)。
    • 另一个灵魂在这里得救了!
    【解决方案2】:

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

    例如:

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

    【讨论】:

    • 真正的救星,只有一个对我有用。
    • 你必须运行'cmake'。在你运行之前
    【解决方案3】:

    更新 (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/uncompyle2https://github.com/gstarnberger/uncompyle 而不是 unpyc。

    【讨论】:

    • 即使应用了第 8 期中的补丁,我也无法让它与 Python 2.7 一起使用。
    • 在 Python 2.7 上出现异常崩溃 - 使用 Uncompyle2
    • 我对答案投了反对票,因为它不适用于 python 2.7
    • uncompyle2 对我来说很棒!
    • uncompyle6 是一个更新的工具,支持 Python 2.7 和 3.x - 请参阅 this answer 了解更多信息
    【解决方案4】:

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

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

    它基于 uncompyle2 和 decompyle++

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

    【讨论】:

    • 甜蜜!值得一提的是,这是为 Windows 用户准备的 :)
    • SourceForge 上没有源代码,所以我暂时忽略这个工具。
    • 非常方便的工具!在 Linux Mint 上的 wine 下反编译我的 Python 2.7 文件没有任何问题
    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2021-06-07
      • 2022-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2011-09-02
      • 2019-12-17
      相关资源
      最近更新 更多