Skip to content

f1tz/wxunpack

Repository files navigation

wxunpack

微信小程序 .wxapkg 解包工具,支持 PC 微信的 V1MMWX 加密格式自动解密与解包。 Windows微信版本 4.1.7.33 测试通过。

功能

  • 自动识别并解密 V1MMWX 加密格式(PC 微信专用加密)
  • 支持未加密的标准 wxapkg 格式(直接解包)
  • 支持主包(__APP__.wxapkg)与分包(_xxx_.wxapkg)批量处理
  • 提供 appid 验证工具,快速确认 appid 是否正确

安装

需要 uv

# 克隆项目后安装依赖
uv sync

或手动安装:

pip install pycryptodome

快速开始

# 解包整个目录(含主包 + 分包)
uv run unpack.py 162/ --appid wx551b0a88c0e39aeb

# 指定输出目录
uv run unpack.py 162/ --appid wx551b0a88c0e39aeb --out ./output

# 解包单个文件
uv run unpack.py 162/__APP__.wxapkg --appid wx551b0a88c0e39aeb

如何获取 appid

appid 格式为 wx + 16 位十六进制字符,例如 wx551b0a88c0e39aeb

PC 微信:wxapkg 文件存放在以 appid 命名的目录下,直接查看路径即可:

C:\Users\{用户名}\Documents\WeChat Files\Applet\{AppID}\{version}\

Android 微信(需 root):

/data/data/com.tencent.mm/MicroMsg/{hash}/appbrand/pkg/

验证 appid 是否正确:

uv run find_appid.py verify wx551b0a88c0e39aeb 162/__APP__.wxapkg
# [OK] appid 'wx551b0a88c0e39aeb' 验证成功!可以用于解密

搜索本机微信存储路径(自动查找 appid):

uv run find_appid.py search

工具说明

文件 功能
unpack.py 主入口,一键完成解密 + 解包
decrypt_wxapkg.py V1MMWX 加密格式解密模块
unpack_wxapkg.py wxapkg 二进制格式解包模块
find_appid.py appid 查找与验证工具

文件格式说明

V1MMWX 加密格式(PC 微信)

PC 微信对 wxapkg 文件采用混合加密,文件以 V1MMWX 为头部标识:

[0-5]        "V1MMWX"  魔数头(6字节)
[6-1029]     AES-256-CBC 加密数据(1024字节),解密后取前1023字节
[1030-end]   XOR 加密数据,密钥为 ord(appid[-2])

AES 密钥派生:

key = PBKDF2(password=appid, salt="saltiest", iterations=1000, keylen=32, hash=SHA1)
IV  = "the iv: 16 bytes"

wxapkg 标准格式(解密后)

解密后得到标准 wxapkg 二进制,有两种变体:

旧版(V1,magic = BE BA 01 00):

[0-3]   BE BA 01 00   魔数
[4-7]   InfoLength    文件表字节数(大端 uint32)
[8-11]  DataLength    数据区字节数(大端 uint32)
[12..12+InfoLength]   文件表(每条: 4字节名长 + 文件名 + 4字节相对偏移 + 4字节大小)
[12+InfoLength..]     文件数据区

新版(V2,magic = BE 00 00 00...):

[0]     0xBE          魔数首字节
[1-15]  元数据
[16-17] FileCount     文件数量(大端 uint16)
[18..]  文件表(每条: 4字节名长 + 文件名 + 4字节绝对偏移 + 4字节大小)
        注意:V2 中偏移为绝对偏移,V1 中为相对于数据区的偏移

解包输出结构示例

unpacked/
├── __APP__/              ← 主包
│   ├── app-config.json
│   ├── app-service.js    ← 业务逻辑(混淆JS)
│   ├── app-wxss.js       ← 样式
│   ├── pages/
│   ├── component/
│   └── ...
└── _yummy_/              ← 分包
    └── yummy/
        ├── pages/
        └── ...

解包后的 JS 文件仍为混淆代码。如需进一步反混淆,可尝试 js-beautify 等工具。

免责声明

本工具仅供学习与安全研究使用,请勿用于侵犯他人知识产权或违反微信平台相关协议。

About

微信小程序 `.wxapkg` 解包工具

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages