赞
踩
Python 通过pyinstaller 打包编译成exe可执行文件 ,反编译exe文件。
提示:以下是本篇文章正文内容,下面案例可供参考
虽然python是跨平台的一门开发语言,但是有时候在没安装python环境的计算机中仍然不能运行python程序。因此,就少不了编译打包的工序,其中用的最多且最简单的就是pyinstaller了
附上官网链接: pyinstaller文档
# 通过pip 安装pyinstaller 第三方模块
pip install pyinstaller
或
# 网速不行的话,可以考虑国内源,这里以清华源为例
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
初始代码,之前做数据采集的脚本。
主要用到三个自定义文件,
main.py, 主函数文件
batchSolution.py, 数据清洗文件
getCookiesBySelenium.py 获取授权cookies文件
# 在相关路径下,命令行输入 ,-F 生成一个exe继承文件,其他相关参数作用,请去官方文档研究
pyinstaller -F main.py
之后在该路径下会生成相关文件夹,其中main.exe文件会存在dist文件夹中。
如果打包过程没有中断报错,该文件可以运行在无python环境的windows计算机中。如果有报错,谷歌搜索基本都可以解决,遇到过几次,循环迭代太大,多进程程序打包后只能单进程执行等问题。
pyinstxtractor.py 是一个用于反编译pyinstaller 所打包exe的文件工具,在开源社区可以找到下载链接。
通过命令行执行相关命令,完成反编译成pyc文件
# 通过命令行
python .\pyinstxtractor.py .\main.exe
其中要注意:建议用相同版本的python执行操作!官方也这样建议!
python3.7.6 打包的exe文件
笔者亲试,
失败!python3.6.8 运行命令行反编译,有个import 的自定义文件没生成成功。
失败!python3.8 运行命令行反编译,可以完美还原三个pyc文件,但是后续pyc转py还是有问题。
最后,还是在python3.7.6 运行命令行反编译,相对就一路绿灯!
运行上面脚本命令后,会在相应目录生成很多相关文件,我们只关注extracted结尾文件夹即可,注意可能不止一层,笔者这边是两层,即extracted结尾文件夹里面又有一个extracted结尾文件夹。
extracted结尾文件夹,笔者推测,都是我们主程序中import 的各种文件,因此也会有很多官方的第三方库pyc文件。
因此只能从笔者习惯写的main.py 编译的main.pyc文件开始分析,哪些是我们自定义的文件。
通过在线 pyc 转 py 的一些工具网站,可以实现源码复现
http://tools.bugscaner.com/decompyle/
https://tool.lu/pyc/
当然也可以通过 uncompyle6 第三方库实现复现,笔者自定义文件较少,用了在线转换工具实现复现main.py 文件。
通过复现后的main.py 文件,即可找到相应import的自定义文件,以及程序导入的第三方包。注意要去所有的extracted结尾文件夹查找,笔者是在第二层内找到相关文件的。
最后把相应的自定义文件拷贝下来,逐一复现即可。源程序就成功还原了!当然程序内的中文编码可能会出现乱码,以及程序小部分复现问题,会代码的可以很快解决。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。