逆向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
1
2
3
4
5
6
7
8
9
10
11
12
| import datetime
# 函数
def test():
print("====666====")
input_text = input("我是说的道理1")
# 打印格式化时间和用户输入的内容
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S ") + input_text)
if __name__ == '__main__':
test()
|
打包程序
首先安装打包程序所使用的库pyinstaller,这里用了清华源并且指定使用了5.13.0版本库
1
| pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller==5.13.0
|
找到脚本所在的文件夹,我的是D:\ cd 到此路径下,并输入以下打包命令:
命令执行完毕后,会看到completed successfully.字段,表示.exe文件生成成功,在dist文件夹中。
逆向过程
首先我们下载反编译脚本pyinstxtractor.py与我们要反编译的.exe文件放入同一个工作目录下
然后我们继续在命令行cd到dist文件夹,输入以下命令并执行:
1
| python pyinstxtractor.py awa.exe
|
执行完毕,看到Successfully字样,会生成awa.exe_extracted文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| [+] Processing FDP配置在线更新2.exe
[+] Pyinstaller version: 2.1+
[+] Python version: 3.8
[+] Length of package: 32503973 bytes
[+] Found 141 files in CArchive
[+] Beginning extraction...please standby
[+] Possible entry point: pyiboot01_bootstrap.pyc
[+] Possible entry point: pyi_rth_pyqt5.pyc
[+] Possible entry point: pyi_rth_pkgutil.pyc
[+] Possible entry point: pyi_rth_inspect.pyc
[+] Possible entry point: 下载json.pyc
[+] Found 225 files in PYZ archive
[+] Successfully extracted pyinstaller archive: FDP配置在线更新2.exe
You can now use a python decompiler on the pyc files within the extracted direct
ory
|
进入该文件夹,里面有许许多多后缀为.dll和.pyd的文件,还有一个名为PYZ-00.pyz_extracted的文件夹,这个文件夹里放的是程序引入的依赖库,如果你引入过自己其他的.py文件,就可以用类似的方法将依赖的.py文件反编译出来
在目录中我们要找到awa.pyc和与你的awa.exe文件同名的文件

然后就可以把这个.pyc文件拿到搜索引擎上面的任意一个pyc转py文件的网站转换了