python 反编译 pyc 一些心得
来源:互联网 发布:万达电商 淘宝别 编辑:程序博客网 时间:2024/05/29 00:30
转自 http://wcf1987.iteye.com/blog/1672542
0x01 , 现在用python的人也多了起来,代码安全始终是我们要考虑的问题,比如说我们要将我们的成果发布出去,py直接发布肯定是不行的(除非你是开源的),那么我们就只能考虑发布pyc文件了,
0x02,今天讨论的就是怎么反编译pyc到源代码的技术,从道理上来讲,这个是完全没问题的,而且反编译出来的代码质量应该相当高才对(参考java class的原理),在百度里面搜索的话,信息量不够,只有2.2以下版本的反编译
0x03 ,利用google的话有个短小的讨论比较有含金量
http://stackoverflow.com/questions/8189352/decompile-python-2-7-pyc
他提出了几个开源的反编译实现,其中比较知名的是uncompyle,经过git查询我们可以发现uncompyle2这个是一个基于uncompyle的加强版本,所以可以考虑使用这个
0x04 https://github.com/wibiti/uncompyle2
下载,安装
python setup.py install 没什么好说的
0x05 安好后怎么用呢,这里要注意,文档写的不详细,实际上是去找python目录下/Scripts/uncompyle2 文件执行,其实打开 uncomple2就可以看到这个实际上是个py文件,具体参数 -h可以看到
0x06 给大家一个我写的小py可以减少些手动工作
- import os
- import sys
- def displayFile(file):
- unPath= sys.executable
- unPath=unPath[ 0 : unPath.rfind( os.sep ) ]
- newname = file[0:file.rfind('.')] + '.py'
- command = "python -u "+unPath+"\scripts\uncompyle2 " + file + ">" + newname
- try:
- os.system(command)
- except e:
- print file
- if __name__ == '__main__':
- #print unPath
- print 'init'
- displayFile('E:\\test.pyc')
- print 'finished'
0x07 有经验的py程序员会在发布程序的时候修改pyc的头8个字节,这8个字节是有特殊含义的
- 四个字节的magic number
- 四个字节的timestamp
头四个是magic number 很多pyc都在这个上面做文章,这修改成不合法的,然后你反编译就是败了,一板你可以找你自己编译成功的pyc头直接覆盖掉他的头8个字节就可以了, timestamp是文件的修改时间,主要是当源码有改变的时候python 就可以重新生成pyc 文件.
我说的比较简单,详细的可以看看这个 http://www.iteye.com/topic/382423
- python 反编译 pyc 一些心得
- python 反编译 pyc 资料
- Python反编译&pyc文件反编译
- 反编译pyc得到python源码
- pyc文件反编译到Python源码
- Python .pyc的编译和反编译
- pyc反编译
- python 反编译 将pyc 文件编译成 py源文件
- 反编译python的pyc/pyo字节码文件
- .pyc .pyo反编译
- python2.6 pyc反编译
- pyc文件反编译方法
- .pyc反编译在线工具
- python pyc
- 用uncompyle2 反编译pyc文件
- .net的一些反编译程序的心得.
- python pyc pyo
- Python 中的Pyc文件
- Oracle数据库的安装与配置及PLSQL的安装与配置
- 什么是php的性状(Trait)
- 约瑟夫问题
- Fragment、Activity的知识点总结
- 关于静态方法,self,cls
- python 反编译 pyc 一些心得
- 转义序列和格式化输出
- 显示函数调用栈
- IOS TableView头部Cell显示不全
- 初识Spring security-无Security的SpringMVC
- 状态压缩入门 POJ
- 86. Partition List\148. Sort List
- Python(StringIO)模块详解
- java安全架构____https的原理和交互过程(1)