当前位置:   article > 正文

Python程序编译与反编译_pyinstxtractor

pyinstxtractor


前言

Python 通过pyinstaller 打包编译成exe可执行文件 ,反编译exe文件。


提示:以下是本篇文章正文内容,下面案例可供参考

一、通过 pyinstaller 打包

虽然python是跨平台的一门开发语言,但是有时候在没安装python环境的计算机中仍然不能运行python程序。因此,就少不了编译打包的工序,其中用的最多且最简单的就是pyinstaller了

附上官网链接: pyinstaller文档

1.安装pyinstaller

# 通过pip 安装pyinstaller 第三方模块
pip install pyinstaller
或
# 网速不行的话,可以考虑国内源,这里以清华源为例
pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 1
  • 2
  • 3
  • 4
  • 5

2. 开始打包

初始代码,之前做数据采集的脚本。
主要用到三个自定义文件,
main.py, 主函数文件
batchSolution.py, 数据清洗文件
getCookiesBySelenium.py 获取授权cookies文件
在这里插入图片描述

# 在相关路径下,命令行输入 ,-F 生成一个exe继承文件,其他相关参数作用,请去官方文档研究
pyinstaller -F main.py
  • 1
  • 2

之后在该路径下会生成相关文件夹,其中main.exe文件会存在dist文件夹中。

如果打包过程没有中断报错,该文件可以运行在无python环境的windows计算机中。如果有报错,谷歌搜索基本都可以解决,遇到过几次,循环迭代太大,多进程程序打包后只能单进程执行等问题。


二、反编译Pyinstaller 打包的exe程序

1. 通过 pyinstxtractor.py 把exe 转 pyc文件

pyinstxtractor.py 是一个用于反编译pyinstaller 所打包exe的文件工具,在开源社区可以找到下载链接。
通过命令行执行相关命令,完成反编译成pyc文件

# 通过命令行
python .\pyinstxtractor.py .\main.exe
  • 1
  • 2

其中要注意:建议用相同版本的python执行操作!官方也这样建议!
python3.7.6 打包的exe文件
笔者亲试,
失败!python3.6.8 运行命令行反编译,有个import 的自定义文件没生成成功。
失败!python3.8 运行命令行反编译,可以完美还原三个pyc文件,但是后续pyc转py还是有问题。
最后,还是在python3.7.6 运行命令行反编译,相对就一路绿灯!
在这里插入图片描述

2. 找到相关pyc文件

运行上面脚本命令后,会在相应目录生成很多相关文件,我们只关注extracted结尾文件夹即可,注意可能不止一层,笔者这边是两层,即extracted结尾文件夹里面又有一个extracted结尾文件夹。
extracted结尾文件夹,笔者推测,都是我们主程序中import 的各种文件,因此也会有很多官方的第三方库pyc文件。
因此只能从笔者习惯写的main.py 编译的main.pyc文件开始分析,哪些是我们自定义的文件。
  • 1
  • 2
  • 3

在这里插入图片描述

3. 把相关pyc文件转py

通过在线 pyc 转 py 的一些工具网站,可以实现源码复现
http://tools.bugscaner.com/decompyle/
https://tool.lu/pyc/
当然也可以通过 uncompyle6 第三方库实现复现,笔者自定义文件较少,用了在线转换工具实现复现main.py 文件。

通过复现后的main.py 文件,即可找到相应import的自定义文件,以及程序导入的第三方包。注意要去所有的extracted结尾文件夹查找,笔者是在第二层内找到相关文件的。
  • 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后把相应的自定义文件拷贝下来,逐一复现即可。源程序就成功还原了!当然程序内的中文编码可能会出现乱码,以及程序小部分复现问题,会代码的可以很快解决。

三、总结

  1. 在于版本问题,导致反编译中途试错多次
  2. 很难区分自定义文件pyc和官方文件pyc,因为笔者有个人习惯会设置main.py为入口程序才有思路
  3. pyinstaller 打包的时候,没加密,对于一些隐私程序也是相对不够安全的。官方提供了加密参数,以及相关论坛也给了很多个性化加密方式,后续可以继续学习
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/601331
推荐阅读
相关标签
  

闽ICP备14008679号