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

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

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

Python 反编译:pycdc工具的使用

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

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

1.工具准备

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

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

pyinstxtractor.py 工具的下载地址: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文件放入同一个工作目录下:
文件夹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

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

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

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

在这里插入图片描述

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

目录
相关文章
|
4天前
|
机器学习/深度学习 存储 数据挖掘
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
44 20
|
3天前
|
数据可视化 算法 数据挖掘
Python时间序列分析工具Aeon使用指南
**Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
56 37
Python时间序列分析工具Aeon使用指南
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
170 77
|
9天前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
128 4
数据分析的 10 个最佳 Python 库
|
1月前
|
XML JSON 数据库
Python的标准库
Python的标准库
52 11
|
2月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
150 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
1月前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
74 8
|
1月前
|
数据可视化 编译器 Python
Manim:数学可视化的强大工具 | python小知识
Manim(Manim Community Edition)是由3Blue1Brown的Grant Sanderson开发的数学动画引擎,专为数学和科学可视化设计。它结合了Python的灵活性与LaTeX的精确性,支持多领域的内容展示,能生成清晰、精确的数学动画,广泛应用于教育视频制作。安装简单,入门容易,适合教育工作者和编程爱好者使用。
364 7
|
1月前
|
安全 API 文件存储
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
43 4