Python 反编译:pyinstxtractor工具和uncompyle6库的使用

uncompyle6 现仅适用于 Python 2.4 到 3.8 版本
Python 3.9 及以上版本请参见我另外一篇博客:

Python 反编译:pycdc工具的使用

Python 反编译

  • 1.工具准备
  • 2.反编译步骤

上期我们介绍了Pyinstaller库的使用方法,已经可以将.py文件编译成.exe文件运行了,这期博客,我们将教大家如何将一个Pyinstaller编译出的.exe文件反编译出源文件。

1.工具准备

本期我们主要用到三个工具:

  • pyinstxtractor.py
  • 任意一个Hex编辑器
  • uncompyle库

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.5503

uncompyle库为第三方库,可以使用pip命令安装:

pip install uncompyle6

2.反编译步骤

首先,我们先将pyinstxtractor.py工具与我们要反编译的.exe文件放入同一个工作目录下:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第1张图片

然后在当前目录打开终端,输入python pyinstxtractor.py 文件名.exe
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第2张图片

回车运行:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第3张图片

可以发现工作目录下多了一个名为文件名.exe_extracted的文件夹:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第4张图片

进入该文件夹,里面有许许多多后缀为.dll.pyd的文件,还有一个名为PYZ-00.pyz_extracted的文件夹,这个文件夹里放的是程序引入的依赖库,如果你引入过自己其他的.py文件,就可以用类似的方法将依赖的.py文件反编译出来。

目录中有两个带.pyc后缀的文件,我们要找到那个与你的.exe文件同名的文件:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第5张图片
pyinstxtractor.py工具在2.0以前的版本,会生成两个不带后缀的文件,我们仍然是要找到那个与自己的.exe文件同名的文件,手动为它添加.pyc后缀)

为它添加.pyc后缀并用Hex编辑器打开:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第6张图片

这个.pyc文件是没有Magic Number的,我们需要根据Python版本自行补全:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第7张图片
Magic Number补全相关的详细操作,请见:Python Uncompyle6 反编译工具使用 与 Magic Number 详解

然后回到目录下,打开控制台,输入命令uncompyle6 文件名.pyc > 文件名.py回车执行,就可以看到目录下生成了.py文件了:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第8张图片

Python版本要是uncompyle6库支持的版本哦:
Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第9张图片

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

Python 反编译:pyinstxtractor工具和uncompyle6库的使用_第10张图片

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

你可能感兴趣的:(Python,python,开发语言)