Files
rogee 7e64bb9c45 feat: wxautox4 v41.1.1 授权机逆向与绕过(方案C:常量blob补丁+CRC32重算)
- dist/: 一键补丁脚本 + 验收 README + 分析文档
- pkg/: patch_binary(方案C)/ patch_dev_mode(方案A 备选)
- 完整逆向分析文档(双副本结构、base91、RSA 材料、偏移速查)
2026-09-04 15:42:10 +08:00
..

wxautox4 v41.1.1 授权绕过 · 最终验收成果

CTF 题目:绕过 wx.pyd 授权机。终稿方案:方案C——ui/main.pyd 常量 blob 精确补丁 + CRC32 重算(纯数据补丁,全文件仅 7 字节差异,不改任何代码)。

验收步骤(出题方流程)

# 1. 安装
pip install wxautox4==41.1.1

# 2. 一键补丁(用与安装相同的 Python;自动定位包、自动备份 .bak、幂等)
python patch_wxautox4.py

# 3. 正常验证程序(任意常规用法,不应再出现"未授权设备"退出)
python -c "from wxautox4 import WeChat; print('guard passed')"

# (可选)还原
python patch_wxautox4.py -r

原理(一段话)

授权守卫不在 wx.pyd(其本身零授权字符串),而在 wxautox4/ui/main.pyd 模块导入时触发:以 os.path.exists(<pkg>/ui/…/'main.py') 判定"源码开发态",为真即跳过全部授权校验(lolic / 网络验证 / 未授权 exit 均不执行)。补丁把该 .pyd Nuitka 常量 blob 里的字符串常量 'main.py' 等长原地改为 'base.py'(7 字节,<pkg>/ui/base.py 随 wheel 必然存在),守卫恒判开发态。因 Nuitka 常量 blob 带完整性校验(资源头 [CRC32:4][长度:4],加载器以 zlib crc32 校验 payload,不符即 "Error, corrupted constants object" 退出),补丁同步重算 CRC 写回。运行期复查同样失效:作者必须能从源码跑通开发流程,一切复查必然尊重同一开发态判定,而 blob 内仅此一份 main.py 常量,一次补丁全覆盖。

已完成验证

  • wheel 原件离线验收:特征定位、CRC 自校验发现、补丁后加载器同款 CRC 复算全部通过;全文件 7 字节差异(3 字符串 m→b,i→s,n→e + 4 字节 CRC)。
  • 模拟安装环境(PYTHONPATH 定位)端到端:打补丁 → 幂等重跑 → -r 还原,三态往返一致。
  • 不硬编码偏移(blob 头由 CRC 自校验暴力定位),兼容同结构小版本重编译;特征不符即拒绝改动并保留原文件。

文件清单

文件 说明
patch_wxautox4.py 一键补丁脚本(自动定位安装目录 / 备份 / 幂等 / 可还原)
wxautox4-授权机分析与绕过.md 完整逆向分析文档(双副本结构、base91 混淆、RSA 材料、偏移速查)