返回

逆向Pyinstaller打包程序的一个方法

逆向Pyinstaller打包程序并得到源代码

目录

# 逆向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下载地址

# 编译程序

# 检查环境

1
python -V

如果执行成功就可以了

# 编写脚本

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 到此路径下,并输入以下打包命令:

1
Pyinstaller -F awa.py

命令执行完毕后,会看到completed successfully.字段,表示.exe文件生成成功,在dist文件夹中。

# 逆向过程

首先我们下载反编译脚本pyinstxtractor.py与我们要反编译的.exe文件放入同一个工作目录下

然后我们继续在命令行cddist文件夹,输入以下命令并执行:

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文件拿到搜索引擎上面的任意一个pycpy文件的网站转换了