其它相关推荐:
《python Magic Number对照表》
《Windows下搭建Cmake编译环境进行C/C++文件的编译》
Sublime Text工具:https://download.csdn.net/download/_/?spm=1001.2014.3001.5503
pycdc工具:https://download.csdn.net/download/_/
经常使用pyinstaller将一些写的python程序打包成了各种exe,时间一长,源码丢失,为了恢复一部分源码,只得将先前编译好的exe反编译成py文件。
Pyinstaller在打包过程中会将py文件编译为pyc文件,然后去掉pyc文件开头的16个字节。然后将python解释器、依赖文件和修改后的pyc文件一起,用一种特殊的自解压格式打包起来,形成可执行文件。这16个字节是 Python 字节码文件的一个Magic Number和版本信息,它们用于标识这是一个 Python 字节码文件以及它是由哪个版本的 Python 编译的。
本文以test.exe为例,将其反编译为test.py
反编译过程大致分为以下三步:
1.使用pyinstxtractor.py将exe文件转换成pyc文件
2.给pyc文件添加文件头
3.使用pycdc工具反编译pyc文件,获得源码
出现如下Successfully字眼则表示成功
在该路径下已经生成了一个“test.exe_extracted"的文件夹
在“test.exe_extracted"的文件夹找到test文件(没有后缀名),一般你的程序是xxx.exe,就找xxx文件
将test文件名改为test.pyc
将test.pyc用Sublime Text工具打开,此时是以16进制的方式打开的
打开“test.exe_extracted"文件夹下的PYZ-00.pyz_extracted文件夹,还是用Sublime Text随便打开其中一个pyc文件
将xxx.pyc文件的第一行16个字节复制下来,添加到test.pyc文件的第一行,保存,如下图:
也可以参照python Magic Number对照表自行补充
获取pycdc工具有两种途径:
(1)可以去Github手动下载pycdc安装包(但程序需要编译):https://github.com/zrax/pycdc
程序的编译需要用到CMake,还比较麻烦。。。
如果想试试的话可以参考文章:《Windows下搭建Cmake编译环境进行C/C++文件的编译》
(2)除此之外可以下载编译好的可执行文件:https://download.csdn.net/download/_/
将修改后的test.pyc文件和pycdc.exe放在同目录下
执行命令 pycdc.exe test.pyc>test.py,同目录下生成转换后的test.py文件,该文件就是转换出来的源码
附录
参考文章:《Windows下搭建Cmake编译环境进行C/C++文件的编译》
《python Magic Number对照表》
Sublime Text工具:https://download.csdn.net/download/_/?spm=1001.2014.3001.5503
pycdc工具:https://download.csdn.net/download/_/
pyinstxtractor.py内容如下:
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/798.html