5分钟解析Python加密exe:Python EXE Unpacker逆向实战指南

5分钟解析Python加密exe:Python EXE Unpacker逆向实战指南

【免费下载链接】python-exe-unpacker 【免费下载链接】python-exe-unpacker 项目地址: https://gitcode.com/gh_mirrors/pyt/python-exe-unpacker

你是否遇到这些痛点?

当你拿到一个Python打包的可执行文件(EXE),是否曾因无法查看源码而束手无策?作为开发者,你可能需要分析第三方工具的实现逻辑;作为安全研究员,你可能需要审计可疑程序的恶意行为。但PyInstaller和py2exe等工具将Python代码打包成EXE后,会对源码进行加密和混淆,形成一道难以逾越的技术壁垒。

读完本文你将获得:

  • 掌握Python EXE文件的逆向工程完整流程
  • 学会使用Python EXE Unpacker工具解析加密打包文件
  • 解决PyInstaller/py2exe版本兼容性问题的实战方案
  • 应对加密字节码的高级解密技巧

工具简介:Python EXE Unpacker

Python EXE Unpacker是一款专为逆向工程师设计的开源工具,能够自动识别并解包由PyInstaller和py2exe打包的可执行文件。该工具整合了多种逆向工程技术,包括PE文件分析、加密字节码解密和Python字节码反编译,形成一站式解决方案。

mermaid

核心功能特性

功能描述适用场景
自动类型识别通过PE文件结构分析,识别PyInstaller/py2exe打包格式未知来源EXE文件分析
加密字节码解密支持解析PyInstaller的AES加密保护处理加密打包的商业软件
魔法数修复自动修复缺失Python magic的字节码文件解决反编译工具报错问题
版本兼容处理支持Python 2.7-3.x生成的EXE文件处理不同时期打包的程序

环境准备与安装

系统要求

  • Python 2.7或更高版本(推荐Python 3.7+)
  • 支持Windows/macOS/Linux操作系统
  • 至少100MB可用磁盘空间(用于依赖库和临时文件)

安装步骤

  1. 克隆代码仓库
git clone https://gitcode.com/gh_mirrors/pyt/python-exe-unpacker
cd python-exe-unpacker
  1. 安装依赖库
# Python 2.x
pip2 install --user -r requirements.txt

# Python 3.x
pip3 install --user -r requirements.txt

注意:对于Linux系统,可能需要额外安装pefile系统依赖:

sudo apt-get install python3-pefile  # Debian/Ubuntu
sudo yum install python3-pefile      # CentOS/RHEL

实战操作指南

基础用法:解包PyInstaller程序

以名为malware.exe的可疑文件为例,执行以下命令进行完整解包:

python python_exe_unpack.py -i malware.exe

工具执行流程如下:

  1. 类型识别阶段
[*] On Python 3.8
[*] This exe is packed using pyinstaller
[*] Unpacking the binary now
[*] Processing malware.exe
[*] Pyinstaller version: 2.1+
[*] Python version: 36
[*] Length of package: 6284512 bytes
[*] Found 54 files in CArchive
[*] Beginning extraction...please standby
[*] Successfully extracted pyinstaller exe.
  1. 文件提取结果

工具会创建malware.exe_extracted目录,其中包含:

  • 主程序文件(无扩展名,如hello
  • 依赖库文件(如python36.dll
  • PYZ归档提取目录(out00-PYZ.pyz_extracted
  1. 定位核心代码

在提取目录中,重点关注以下文件:

-rw-rw-r-- 1 user user  111 Nov 14 13:08 hello        # 主程序字节码
-rw-rw-r-- 1 user user 628K Nov 14 13:08 out00-PYZ.pyz # 依赖库归档
drwxrwxr-x 2 user user  12K Nov 14 13:08 out00-PYZ.pyz_extracted # 归档内容

高级技巧:处理加密字节码

当遇到加密保护的PyInstaller程序时,工具会自动检测并提示解密:

[*] Encrypted pyc file is found. Decrypt it? [y/n] y

解密过程涉及以下步骤:

  1. pyimod00_crypto_key文件提取加密密钥
  2. 使用AES-CFB模式解密PYZ归档
  3. 修复解密后的字节码文件头
  4. 反编译为可读Python源码

特殊场景:修复缺失魔法数的PYC文件

某些情况下,提取的字节码文件会缺失Python magic数(如PyInstaller主程序),导致反编译失败。使用-p参数修复:

python python_exe_unpack.py -p malware.exe_extracted/hello

修复原理:工具会自动添加对应Python版本的magic数(如Python 2.7为\x03\xf3\x0d\x0a),使文件能被uncompyle6正确识别。

常见问题解决方案

问题1:版本不兼容错误

错误信息

[-] Error in unpacking the exe. Probably due to version incompability

解决方案

  • 使用与打包时相同的Python版本执行工具
  • 尝试切换Python 2/3环境:
    alias python=python2  # 切换到Python 2
    alias python=python3  # 切换到Python 3
    

问题2:反编译失败

错误信息

[-] Unable to decompile the pyc file.

解决方案

  1. 确认uncompyle6版本支持目标Python版本:

    pip install -U uncompyle6  # 更新到最新版本
    
  2. 手动指定Python版本进行反编译:

    uncompyle6 --python-version 3.6 hello.pyc > hello.py
    

问题3:PE文件解析错误

错误信息

[-] Error: Could not open malware.exe

解决方案

  • 检查文件路径是否正确
  • 验证文件完整性(可能是损坏的EXE文件)
  • 对于受保护的文件,尝试使用管理员权限运行

高级应用:集成到自动化分析流程

Python EXE Unpacker可通过编程方式集成到自动化分析系统中,以下是一个简单的Python API调用示例:

from python_exe_unpack import PyInstaller, Py2Exe

# 分析PyInstaller文件
unpacker = PyInstaller("sample.exe", output_dir="/tmp/analysis")
if unpacker.is_magic_recognised():
    unpacker.unpacked("sample.exe")
    print(f"文件已解包至: {unpacker.extraction_dir}")

# 分析py2exe文件
unpacker = Py2Exe("legacy.exe")
if unpacker.is_magic_recognised():
    unpacker.unpacked("legacy.exe")

总结与展望

Python EXE Unpacker作为一款开源逆向工程工具,为开发者和安全研究员提供了强大的Python EXE文件分析能力。通过本文介绍的方法,你可以轻松解析大多数PyInstaller和py2exe打包的可执行文件,还原出原始Python源码。

未来展望

  • 增加对 nuitka 等新型打包工具的支持
  • 开发图形化界面提升用户体验
  • 集成静态代码分析功能,自动检测恶意行为

工具的完整代码和最新更新请访问官方仓库:https://gitcode.com/gh_mirrors/pyt/python-exe-unpacker

法律声明:本文所述技术仅用于合法的逆向工程和安全研究,未经授权分析他人软件可能违反法律法规。使用前请确保你拥有目标文件的合法访问权限。

【免费下载链接】python-exe-unpacker 【免费下载链接】python-exe-unpacker 项目地址: https://gitcode.com/gh_mirrors/pyt/python-exe-unpacker

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值