如何将Python字节码还原为原始代码?

8 投票
1 回答
3915 浏览
提问于 2025-04-15 18:22

这可能是个傻问题,不过,假设我们有一些输出,比如说……

>>> from dis import dis
>>> def myfunc(x):
...     print x ** 2
... 
>>> dis(myfunc)
  2           0 LOAD_FAST                0 (x)
              3 LOAD_CONST               1 (2)
              6 BINARY_POWER        
              7 PRINT_ITEM          
              8 PRINT_NEWLINE       
              9 LOAD_CONST               0 (None)
             12 RETURN_VALUE        

……或者一个 .pyc 文件,能不能把它重新组合成一段有效的 Python 源代码呢?也就是说,像这样 reassemble(dis(myfunc)) == "def reassembled_function(x):\n print x ** 2"

我并不是出于什么特别的实际原因,只是好奇这是否可能,或者有没有人尝试过……

相关内容

1 个回答

5

这是一个链接,指向一个名为“decompyle”的项目,托管在SourceForge网站上。这个项目的主要功能是将Python编写的程序反编译,也就是说,它可以把已经编译成机器代码的Python程序转换回人类可以理解的代码。你可以通过点击这个链接访问这个项目。

撰写回答