python字节码的探索与反编译

2024-05-16 14:33:28 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有:

>>> def test(a):    
>>>    print a

现在,我想探索一下测试在编译后的形式中是什么样子的。

>>> test.func_code.co_code
'|\x00\x00GHd\x00\x00S'

我可以使用dis模块获得分解的表单:

>>> import dis
>>> dis.dis(test)
  2           0 LOAD_FAST                0 (a)
              3 PRINT_ITEM
              4 PRINT_NEWLINE
              5 LOAD_CONST               0 (None)
              8 RETURN_VALUE

有没有一个开源的和维护的反编译器,我可以用来把字节码转换回可读的python代码?

更新:感谢您建议反编译,但它已经过时(python2.3),没有人再维护它。有什么Python2.5或更高版本的吗?


Tags: 模块testdefcodeload形式funcprint
3条回答

从github获取uncompyle2!:)

取消yc

http://sourceforge.net/projects/unpyc/

它是旧decompyle的一个维护分支,更新后可用于2.5和2.6。

还有现在的{a1},它是用python编写的,pycdc是用C++编写的。

这两个版本都处理多个版本的Python字节码,包括Python 2版本和Python 3版本。

相关问题 更多 >