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

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

Python 反编译:pycdc工具的使用

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python 反编译:pyinstxtractor工具和uncompyle6库的使用

Python 反编译

    • 工具准备
    • 反编译步骤

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

工具准备

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

  • 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

反编译步骤

首先,我们先将pyinstxtractor.py工具与我们要反编译的.exe文件放入同一个工作目录下:
文件夹1

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

回车运行:
控制台2

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

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

目录中有两个带.pyc后缀的文件,我们要找到那个与你的.exe文件同名的文件:
文件夹3
pyinstxtractor.py工具在2.0以前的版本,会生成两个不带后缀的文件,我们仍然是要找到那个与自己的.exe文件同名的文件,手动为它添加.pyc后缀)

为它添加.pyc后缀并用Hex编辑器打开:
编辑器1

这个.pyc文件是没有Magic Number的,我们需要根据Python版本自行补全:
编辑器2
Magic Number补全相关的详细操作,请见:Python Uncompyle6 反编译工具使用 与 Magic Number 详解

然后回到目录下,打开控制台,输入命令uncompyle6 文件名.pyc > 文件名.py回车执行,就可以看到目录下生成了.py文件了:
文件夹4

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

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

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

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年6月26日
下一篇 2023年6月26日

相关推荐