使用uncompyle2直接反编译python字节码文件pyo/pyc

这里主要介绍一下,python生成的pyo、pyc字节码文件的反编译工具uncompyle2(https://github.com/wibiti/uncompyle2).

python生成的字节码文件的反编译工具,有unpyclib和uncompyle2,发现uncompyle2可以直接转化为十分完美的python源码,并可以将反编译后的源码再次生成字节码文件!

 

安装uncompyle2

1.从github上获取uncompyle2然后进行配置。

2.sudo python setup.py install

3.解压的文件夹uncompyle2-master/scripts找到可以直接使用的脚本uncompyle2

 

反编译pyo、pyc

1../uncompyle2 ~/Desktop/abstract.pyc > ~/Desktop/abstract.py

2../uncompyle2 ~/Desktop/abstract.pyo > ~/Desktop/abstract.py

 

生成pyo

1.python -O -m py_compile abstract.py
注:如果不带选项-O则生成的是pyc文件,-O选项则可以在生成代码时进行一定的优化。

 

pyc的头8个字节

有经验的py程序员会在发布程序的时候修改pyc的头8个字节,这8个字节是有特殊含义的:

1.前四个字节magic number

2.后四个字节timestamp

头四个是magic number 很多pyc都在这个上面做文章,这修改成不合法的,然后你反编译就是败了,一般可以找自己编译成功的pyc头直接覆盖掉他的头8个字节就可以了, timestamp是文件的修改时间,主要是当源码有改变的时候python 就可以重新生成pyc 文件.

 

关于pyc文件,请参考http://www.iteye.com/topic/382423

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值