
uncompyle6 现仅适用于 Python 2.4 到 3.8 版本
Python 3.9 及以上版本请参见我另外一篇博客:
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 反编译:pyinstxtractor工具和uncompyle6库的使用
上期我们介绍了Pyinstaller库的使用方法,已经可以将
.py文件编译成.exe文件运行了,这期博客,我们将教大家如何将一个Pyinstaller编译出的.exe文件反编译出源文件。
本期我们主要用到三个工具:
pyinstxtractor.py工具的下载地址:https://sourceforge.net/projects/pyinstallerextractor/ 或https://download.csdn.net/download/qq_63585949/86509791?spm=1001.2014.3001.5503 Hex编辑器 笔者这里是使用的wxMEdit,下载地址: https://wxmedit.github.io/downloads.html 或https://download.csdn.net/download/qq_63585949/86509705?spm=1001.2014.3001.5503uncompyle库为第三方库,可以使用pip命令安装:
pip install uncompyle6首先,我们先将
pyinstxtractor.py工具与我们要反编译的.exe文件放入同一个工作目录下:

然后在当前目录打开终端,输入
python pyinstxtractor.py 文件名.exe:

回车运行:

可以发现工作目录下多了一个名为
文件名.exe_extracted的文件夹:

进入该文件夹,里面有许许多多后缀为
.dll和.pyd的文件,还有一个名为PYZ-00.pyz_extracted的文件夹,这个文件夹里放的是程序引入的依赖库,如果你引入过自己其他的.py文件,就可以用类似的方法将依赖的.py文件反编译出来。 目录中有两个带.pyc后缀的文件,我们要找到那个与你的.exe文件同名的文件:

(pyinstxtractor.py工具在2.0以前的版本,会生成两个不带后缀的文件,我们仍然是要找到那个与自己的.exe文件同名的文件,手动为它添加.pyc后缀)
为它添加
.pyc后缀并用Hex编辑器打开:

这个
.pyc文件是没有Magic Number的,我们需要根据Python版本自行补全:

Magic Number补全相关的详细操作,请见:Python Uncompyle6 反编译工具使用 与 Magic Number 详解
然后回到目录下,打开控制台,输入命令
uncompyle6 文件名.pyc > 文件名.py回车执行,就可以看到目录下生成了.py文件了:

Python版本要是
uncompyle6库支持的版本哦:

uncompyle6现仅适用于 Python 2.4 到 3.8 版本:

Python 3.9 及以上版本请参见我另外一篇博客: Python 反编译:pycdc工具的使用