【问题标题】:How to decompile an exe file compiled by py2exe?如何反编译py2exe编译的exe文件?
【发布时间】:2011-09-11 09:19:50
【问题描述】:

如何反编译py2exe编译的exe文件?

只有一个 exe 文件,没有任何 zip 文件。

如何反编译成pyc或pyo文件?

【问题讨论】:

  • 您为什么希望能够做到这一点?
  • 如果没有library zip 存档,您几乎无能为力。
  • 据我所知,exe 文件是一种封装类型,因为我的 Linux 包管理器会这样打开它们。
  • py2exe 可以将 library.zip 捆绑到 .exe 中。假设这里是这种情况(并且您不只是缺少 library.zip),那么您可以简单地从 .exe 中提取文件(将其视为 zip 文件),然后剩下 .pyc 文件。将 pyc 反编译为 py,请看这里:stackoverflow.com/questions/378127/pyc-to-py-files

标签: python py2exe decompiler


【解决方案1】:

另一种方法是直接从内存中获取 python 字节码转储,Immunity Inc 发表了一篇关于该主题的论文,其中包含一个工具包,该工具包从内存中获取字节码并将其反编译为 .py 源代码。 pyREtic

【讨论】:

    【解决方案2】:

    使用提供的脚本here。它需要安装原始的 py2exe Python 模块。此外,您必须确保使用最初用于生成可执行文件的相同 Python 版本。否则脚本将为 .pyc 生成无效的幻数。 以后可以使用uncompyle2恢复原来的.py源码。

    【讨论】:

      【解决方案3】:

      您可以使用unpy2exe提取.pyc,然后使用pyREtic获取源代码。我想你可以阅读 HOWTO 并了解如何使用这些程序,但基本上你去 unpy2exe.py 的位置并运行:

      unpy2exe.py [-h] [-o OUTPUT_DIR] [-p PYTHON_VERSION] 文件名

      然后去REpdb.py所在的位置运行:

      REpdb.py

      set_project [新项目名称]

      选择python版本

      fs_um_decompile [pyc 文件的位置]

      源应该在...\Projects[新项目名称]\sourcecode\fs_um\

      【讨论】:

      • unpy2exe 对我来说就像一个魅力。然而,pyREtic 失败,出现关于字符串是列表的 TypeError,我未能在互联网上对其进行解码。该工具看起来像是旨在撤消字节码的混淆。对于我的问题, uncompyle6 就足够了。链接到源代码是正确的做法,但 pip install 对 uncompyle6 和 unpy2exe 都有效。
      【解决方案4】:

      我用 C++ 编写了一个小工具,它采用 py2exe 生成的可执行文件并提取 PYTHONSCRIPTLibrary.zipLibrary.zip 主要包含 pyc/pyo 文件,您可以使用任何反编译器对其进行反编译。

      链接:

      Py2ExeDumperhttps://sourceforge.net/projects/py2exedumper/
      简易 Python 反编译器http://sourceforge.net/projects/easypythondecompiler/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-29
        • 1970-01-01
        • 2023-01-11
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 2012-08-03
        • 2020-08-22
        相关资源
        最近更新 更多