Skip to content

YI597/WeChatMiniAppDecrypt

Repository files navigation

PC微信小程序解密与解包工具集

Python Node.js License CI Stars Issues Last Commit

一套完整的PC微信小程序解密与解包工具,支持GUI自动化批量处理。

功能特性

  • 🔓 GUI自动化解密 - 使用pywinauto自动操作UnpackMiniApp.exe,绕过wxid限制
  • 📦 批量解包 - 自动解包所有已解密的小程序包
  • 🔍 智能识别 - 自动识别小程序缓存目录和包版本
  • 高效处理 - 支持批量处理多个小程序
  • 📊 详细日志 - 显示解密/解包进度和结果统计

工作流程

┌─────────────────────────────────────────────────────────────────┐
│                      PC微信小程序解密解包流程                      │
└─────────────────────────────────────────────────────────────────┘

  ┌──────────────┐      ┌──────────────┐      ┌──────────────┐
  │   PC微信      │      │  缓存目录     │      │ UnpackMiniApp│
  │   小程序      │ ───► │ __APP__.wxapkg│ ───► │    .exe      │
  │  (加密格式)   │      │  (加密包)     │      │   (解密工具)  │
  └──────────────┘      └──────────────┘      └───────┬──────┘
                                                       │
                                                       ▼
  ┌──────────────┐      ┌──────────────┐      ┌──────────────┐
  │   微信开发者  │      │   解包工具    │      │   解密后      │
  │   工具打开    │ ◄─── │ wxappUnpacker│ ◄─── │ .wxapkg      │
  │   源码目录    │      │              │      │ (明文包)      │
  └──────────────┘      └──────────────┘      └──────────────┘

目录结构

WeChatMiniAppDecrypt/
├── decrypt/                          # 解密相关工具
│   ├── auto_decrypt_gui.py           # GUI自动化批量解密脚本 (v1.0)
│   ├── auto_decrypt_gui_v2.py        # 优化版解密脚本 (v2.0) ⚠️推荐
│   ├── diagnose.py                   # 界面访问问题诊断工具 🆕
│   ├── UnpackMiniApp.exe             # 解密工具 (需单独下载)
│   └── README.md                      # 解密工具使用说明
│
├── unpack/                           # 解包相关工具
│   ├── auto_unpack.py               # 自动化解包脚本
│   ├── wxappUnpacker-master/        # wxappUnpacker解包器
│   │   ├── wuWxapkg.js              # 主解包脚本
│   │   ├── wuConfig.js              # 配置文件处理
│   │   ├── wuJs.js                  # JS文件处理
│   │   ├── wuWxml.js                # WXML文件处理
│   │   ├── wuWxss.js                # WXSS文件处理
│   │   └── package.json
│   └── README.md                      # 解包工具使用说明
│
├── docs/                             # 文档
│   ├── 完整使用指南.md
│   ├── 常见问题FAQ.md
│   ├── 技术原理说明.md
│   └── 运行问题与注意事项.md          # 🆕 界面问题与解决方案
│
├── examples/                         # 示例
│   └── 示例截图/
│
├── decrypt_all.bat                   # Windows批处理解密脚本
├── decrypt_all.sh                    # Linux/Mac批处理解密脚本
├── README.md                          # 本文件
└── LICENSE                            # GPL-3.0许可证

快速开始

前置要求

  • Windows 10/11 (支持GUI自动化)
  • Python 3.7+
  • Node.js 14+
  • PC版微信已打开过小程序

安装步骤

  1. 克隆仓库
git clone https://github.com/YI597/WeChatMiniAppDecrypt.git
cd WeChatMiniAppDecrypt
  1. 安装Python依赖
pip install pywinauto
  1. 安装Node.js依赖 (用于解包)
cd unpack/wxappUnpacker-master
npm install
cd ../..
  1. 下载解密工具
    • 下载 UnpackMiniApp 工具
    • UnpackMiniApp.exe 放入 decrypt/ 目录

使用方法

方法一:诊断并修复问题 (推荐)

如果遇到"访问小程序界面"问题,先运行诊断工具:

# 诊断问题
cd decrypt
python diagnose.py

# 根据诊断结果修复后,使用优化版
python auto_decrypt_gui_v2.py --debug

方法二:快速自动解密+解包

# Windows - 优化版 (推荐)
python decrypt/auto_decrypt_gui_v2.py --debug

# Windows - 标准版
python decrypt/auto_decrypt_gui.py

# Linux (需要GUI环境)
python decrypt/auto_decrypt_gui_v2.py

方法三:手动分步操作

  1. 查找小程序缓存位置
# PC微信小程序缓存目录
C:\Users\<用户名>\Documents\WeChat Files\Applet\
  1. 解密小程序
# 使用GUI工具手动解密,或运行自动化脚本
python decrypt/auto_decrypt_gui.py
  1. 解包小程序
# 单个解包
node unpack/wxappUnpacker-master/wuWxapkg.js <解密后的文件路径>

# 批量解包
python unpack/auto_unpack.py
  1. 用微信开发者工具打开
    • 打开微信开发者工具
    • 导入解包后的目录
    • 即可查看源码

核心工具说明

auto_decrypt_gui_v2.py (优化版 v2.0) ⚠️推荐

解决"访问小程序界面"问题的新版本,主要优化:

  • 🔄 智能重试机制 - 失败自动重试3次
  • ⏱️ 动态延迟 - 根据界面响应自动调整等待时间
  • 📷 截图调试 - 保存操作截图便于排查问题
  • 📝 详细日志 - 完整的操作记录和错误追踪
  • 🛡️ 错误恢复 - 单个失败不影响整体流程
# 推荐命令
python decrypt/auto_decrypt_gui_v2.py --debug

# 自定义参数
python decrypt/auto_decrypt_gui_v2.py -o D:\output --retries 5

diagnose.py (诊断工具)

专门诊断界面访问问题:

  • ✅ 检查微信客户端状态
  • ✅ 检查UnpackMiniApp.exe
  • ✅ 枚举窗口控件元素
  • ✅ 提供修复建议
cd decrypt
python diagnose.py

auto_decrypt_gui.py (标准版 v1.0)

GUI自动化批量解密脚本,核心功能:

  • 自动查找所有小程序包
  • 启动UnpackMiniApp.exe并自动操作
  • 批量解密并验证输出
  • 生成解密报告
# 配置参数
UNPACK_APP = r"D:\jm\decrypt\UnpackMiniApp.exe"      # 解密工具路径
APPLET_DIR = r"C:\Users\xxx\Documents\WeChat Files\Applet"  # 小程序缓存目录
OUTPUT_DIR = r"D:\jm\wxpack"                          # 输出目录

auto_unpack.py

批量解包脚本,核心功能:

  • 扫描解密后的所有.wxapkg文件
  • 调用wxappUnpacker进行解包
  • 自动创建AppID目录
  • 生成解包报告

wxappUnpacker

微信小程序解包工具,支持:

  • 解包.wxapkg文件
  • 还原.js, .json, .wxml, .wxss, .wxs文件
  • 处理分包和主包
  • 还原app-service.js为独立文件

常见问题

Q: 解密失败,提示"找不到wxid"?

A: 这是PC微信小程序加密的已知问题。本工具通过GUI方式绕过此限制:

  1. 使用UnpackMiniApp.exe的GUI界面
  2. 它会自动处理wxid相关的解密逻辑
  3. 确保使用最新版本的UnpackMiniApp

Q: 解包后文件是加密的?

A: 请确保:

  1. 先解密再解包
  2. 解密后的文件头应为 0xBE (魔术头)
  3. 检查是否正确使用GUI工具解密

Q: 分包如何解包?

A: 使用 -s 参数指定主包目录:

node wuWxapkg.js sub-package.wxapkg -s=/path/to/main-package/

Q: 解包后如何用微信开发者工具打开?

A:

  1. 打开微信开发者工具
  2. 点击"导入项目"
  3. 选择解包后的目录
  4. AppID可留空或填写wx+数字ID
  5. 点击确定

技术原理

PC微信小程序加密机制

PC版微信小程序使用AES-CBC + XOR双重加密:

┌──────────────────────────────────────────────┐
│            wxapkg 加密格式                    │
├──────────────────────────────────────────────┤
│  [IV (16字节)] [AES加密数据] [XOR混淆]       │
│                                              │
│  解密步骤:                                    │
│  1. 使用固定密钥解密AES-CBC                   │
│  2. 对结果进行XOR转换                        │
│  3. 得到原始的明文wxapkg文件                  │
└──────────────────────────────────────────────┘

wxapkg文件格式

┌──────────────────────────────────────────────┐
│           .wxapkg 文件结构                    │
├──────────────────────────────────────────────┤
│  Header (14字节)                             │
│  ├── firstMark (1B): 0xBE                   │
│  ├── unknownInfo (4B)                        │
│  ├── infoListLength (4B)                     │
│  ├── dataLength (4B)                         │
│  └── lastMark (1B): 0xED                    │
│                                              │
│  Info List (可变长度)                        │
│  └── 文件条目列表                            │
│      ├── fileCount                          │
│      └── [nameLen, name, offset, size] × N  │
│                                              │
│  Data Section (dataLength字节)               │
│  └── 所有文件内容的连续存储                   │
└──────────────────────────────────────────────┘

免责声明

本工具仅供学习和研究使用,请遵守以下原则:

  • 🔒 不要用于商业目的或非法用途
  • 🔒 尊重小程序开发者的知识产权
  • 🔒 解密的源码仅供个人学习参考
  • 🔒 请勿传播或分享解密的源码

参考项目

更新日志

v2.0.0 (2026-05-14)

  • 🆕 新增 auto_decrypt_gui_v2.py - 优化版解密脚本,解决界面访问问题
  • 🆕 新增 diagnose.py - 界面访问问题诊断工具
  • 🆕 新增 docs/运行问题与注意事项.md - 问题汇总与解决方案
  • 🔄 重试机制 (3次)
  • 🔄 智能延迟等待
  • 🔄 截图调试功能
  • 🔄 详细日志系统

v1.0.0 (2024-05-14)

  • 🎉 初始版本发布
  • ✨ 支持GUI自动化批量解密
  • ✨ 支持批量自动解包
  • ✨ 完整的文档和使用指南

许可证

GPL-3.0

贡献指南

欢迎提交Issue和Pull Request!

支持

如果项目对您有帮助,请 ⭐ Star 支持一下!


Made with ❤️ for WeChat Mini App developers

About

PC WeChat MiniApp decrypt and unpack toolset with GUI automation

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors