uncompyle6 现仅适用于 Python 2.4 到 3.8 版本
Python 3.9 及以上版本请参见我另外一篇博客:
Python 反编译:pycdc工具的使用
![](https://i-blog.csdnimg.cn/blog_migrate/b169d0aec0105f3bfe5ee1bb509c9ac9.gif#pic_center)
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python 反编译:pyinstxtractor工具和uncompyle6库的使用
上期我们介绍了Pyinstaller库的使用方法,已经可以将
.py
文件编译成.exe
文件运行了,这期博客,我们将教大家如何将一个Pyinstaller编译出的.exe
文件反编译出源文件。
工具准备
本期我们主要用到三个工具:
- pyinstxtractor.py
- 任意一个Hex编辑器
- uncompyle库
pyinstxtractor.py
工具的下载地址:https://sourceforge.net/projects/pyinstallerextractor/
或https://download.csdn.net/download/qq_63585949/86509791
Hex编辑器 笔者这里是使用的
wxMEdit
,下载地址:
https://wxmedit.github.io/downloads.html
或https://download.csdn.net/download/qq_63585949/86509705
uncompyle
库为第三方库,可以使用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工具的使用