目录
TL;DR / 极客简报:
- 逆向工程:从 PyInstaller 打包的
.exe二进制文件中提取 Python 源代码的实战指南。- 工具链:使用
pyinstxtractor.py剥离外壳,配合在线反编译器还原.pyc至可读源码。- 工作流:编写测试脚本 -> 使用 PyInstaller 5.13.0 打包 -> 从解压后的 PYZ 归档中定位主程序入口与依赖库。
# 逆向Pyinstaller打包的exe文件源码
我们都知道可以使用库可将.py文件编译成.exe文件运行,我们就从将脚本编译成.exe并将.exe的源码内容反编译出源文件。
# 写在前面
我们都知道可以使用Pyinstaller库可将
.py文件编译成.exe文件运行,这篇文章我们就从将脚本编译成.exe并将.exe的源码内容反编译出源文件。
# 环境工具
Python 3.8.10:没有自己下载
Pyinstaller库:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller==5.13.0
pyinstxtractor.py:下载地址
# 编译程序
# 检查环境
| |
如果执行成功就可以了
# 编写脚本
awa.py
| |
# 打包程序
首先安装打包程序所使用的库pyinstaller,这里用了清华源并且指定使用了5.13.0版本库
| |
找到脚本所在的文件夹,我的是D:\ cd 到此路径下,并输入以下打包命令:
| |
命令执行完毕后,会看到completed successfully.字段,表示.exe文件生成成功,在dist文件夹中。
# 逆向过程
首先我们下载反编译脚本pyinstxtractor.py与我们要反编译的.exe文件放入同一个工作目录下
然后我们继续在命令行cd到dist文件夹,输入以下命令并执行:
| |
执行完毕,看到Successfully字样,会生成awa.exe_extracted文件夹
| |
进入该文件夹,里面有许许多多后缀为.dll和.pyd的文件,还有一个名为PYZ-00.pyz_extracted的文件夹,这个文件夹里放的是程序引入的依赖库,如果你引入过自己其他的.py文件,就可以用类似的方法将依赖的.py文件反编译出来
在目录中我们要找到awa.pyc和与你的awa.exe文件同名的文件
![]()
然后就可以把这个.pyc文件拿到搜索引擎上面的任意一个pyc转py文件的网站转换了