是否可以将已编译的.pyc文件反编译为.py文件?

How*_*rd 156 python decompiling compiled pyc python-3.x

是否有可能从.py文件生成的.pyc文件中获取一些信息?

Ric*_*Vel 149

Uncompyle6适用于Python 3和2.7 - 推荐选项,因为它是最新的工具,旨在统一早期的分支并专注于自动化测试.

Uncompyle2仅支持Python 2.7.这段时间我很好地将.pyc字节码反编译为.py,而unpyclib则因异常而崩溃.

  • 对于你们这些人,因为你不小心删除了错误的文件,我_highly_推荐源代码控制! (14认同)
  • 非常感谢.我不小心删除了我的.py文件而不是.pyc.这使我不必从头开始重写它. (7认同)
  • 如果它的Python 2.7,除了你的评论,你得到的一切:) (4认同)
  • Uncompyle6在python3上对我很有用. (3认同)
  • ^ 如果您使用 PyCharm,您可以右键单击“项目”窗格中的文件/文件夹,然后转到“本地历史记录”>“显示历史记录”以恢复更改。救生员。 (3认同)
  • `uncompyle6` 也可以在 https://www.decompiler.com/ 在线获取 (3认同)
  • 拯救我的生命,谢谢暗示;) (2认同)

小智 31

是的,你可以unpyclibpypi上找到它.

$ pip install unpyclib
Run Code Online (Sandbox Code Playgroud)

你可以反编译你的.pyc文件

$ python -m unpyclib.application -Dq path/to/file.pyc
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了这个并且在一个没有复杂代码的相当小的文件(Django settings.py)上崩溃了一个例外 - uncompyle2工作得很好.-1因为这个原因. (17认同)
  • 它在Python 3.6中的lib \ site-packages \ unpyclib \ applcation.py中以`print __copyright`崩溃了-为什么它使用不带括号的Python 2.7版本的`print`? (4认同)
  • @DavidChing `unpyclib` 的第一个也是最后一个版本 [于 2009 年](https://pypi.org/project/unpyclib/#history),可以肯定地说它是一个仅适用于 Python 2 的程序。 (3认同)

Ext*_*ers 27

您可以尝试Easy Python Decompiler.它基于Decompyle ++和Uncompyle2.它支持反编译python版本1.0-3.3

注意:我是上述工具的作者.

  • 没有Linux版本或源代码的大减号. (21认同)
  • @omikron好像你从口袋里掏出了数百万美元. (16认同)
  • 它发挥了作用.干得好.顺便说一下,你在python中编写这个工具吗? (3认同)
  • 对我来说效果很好(轻松拖放)。确实,Linux 发行版会很好,但打开 Windows 框并不是那么难。 (2认同)
  • 上次发布是 2015 年,看起来是闭源的? (2认同)

cri*_*fan 14

是的

我使用uncompyle6反编译(甚至支持最新的 Python 3.8.0):

uncompyle6 utils.cpython-38.pyc > utils.py

原始 python 和反编译 python 的比较如下所示:

pyc 反编译工具

所以你可以看到,几乎一样,反编译效果非常好

  • 在撰写本文时不支持 > 3.9 Python :( (2认同)

Ken*_*ste 12

Decompyle ++(pycdc)是唯一一个适合我的人:https://github.com/zrax/pycdc

Decompile Python 2.7 .pyc中提出了建议


小智 6

我已经研究了几个小时,终于使用 Decompyle++ 找到了解决方案:

  • 访问https://cmake.org/download/并安装 CMake。
  • 访问https://github.com/zrax/pycdc并获取此存储库的副本:pycdc-master
  • 添加C:\Program Files\CMake\bin到系统环境变量 PATH 下。

我建议将您的pycdc-master文件夹放入另一个文件夹中,例如anotherFolder.

现在您可以在命令行中运行这些命令:

  • cd anotherFolder进入其中的文件夹pycdc-master
  • cmake pycdc-master
  • cd ../向上一级目录,
  • 然后:cmake --build anotherFolder

pycdc.exe然后将在anotherFolder\Debug.

在控制台中执行类似操作pycdc.exe onlyhopeofgettingmycodeback.pyc,它将打印出源代码。我有 Python 3.9.6 源代码,其他都不起作用。