查看: 58|回复: 57

[相关教程] 微信小程序反编译:解包wxapkg还原wxml和js完整流程

[复制链接]

96

主题

5

回帖

951

积分

UID
2
贡献
9 点
钻石
7 个
C币
993 个
发表于 2026-5-28 03:23:14 | 显示全部楼层 |阅读模式
为什么要反编译小程序

上周要逆向一个商业小程序的接口加密逻辑,没源码,只能从手机里把包抠出来反编译。微信小程序的包是wxapkg格式,加密加压缩,直接解压不行。记一下完整流程,从抓包到还原wxml。


  • 找包:Android手机root后,小程序包在 /data/data/com.tencent.mm/MicroMsg/<userhash>/app/pkg/,文件名_xxx_.wxapkg。没root用模拟器,雷电9系自带root。
  • 解密:wxapkg用的是V1加密时整个文件异或一个固定密钥,V2则前1023字节异或、后面用AES-128-CBC。用wxapkg-tools解V2,命令 wxapkg.py unpack -i input.wxapkg -o out_dir。
  • 还原:解密后得到app-service.js和page-frame.html。wxml被编译进了js,要用wcc反编译回wxml。一个叫wxappUnpacker的项目能批量还原。
  • 看接口:在app-service.js里搜 wx.request,所有接口URL和参数都明文,加密函数也能找到调用入口。


几个坑

第一个坑是包版本。微信8.0.40之后小程序包是V2格式,老的unpacker只支持V1,要找支持V2的fork。第二个坑是分包,主包加多个分包,分包在.wxapkg之外还有单独的子包,要全抓。第三个坑是wxml反编译不是百分百还原,事件绑定和wx:if的层级会丢,要对着js手动补。
  1. # 解密加解包一条龙
  2. python wxapkg.py unpack -i _112233_.wxapkg -o ./out
  3. # 还原wxml
  4. node wcc ./out/app-service.js > app-service.wxml
  5. # 找接口
  6. grep -rn "wx.request" ./out
  7. grep -rn "sign\|encrypt\|token" ./out
复制代码

反编译完的js用VS Code格式化一下,配合sourcemap能恢复到接近原始结构。我做的小程序最后在app-service.js第3800行找到了加密入口——sign函数是MD5(参数排序加时间戳加salt),salt硬编码在前端,30分钟搞完。

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

匿名  发表于 2026-9-17 18:33:40
我了个去,顶了
回复

使用道具

0

主题

347

回帖

36

积分

UID
778987
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 18:42:11 | 显示全部楼层
这类活很吃经验,工具只是辅助。
回复

使用道具 举报

0

主题

398

回帖

44

积分

UID
844741
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 18:44:03 | 显示全部楼层
这类技术更新的频率很高,老教程参考价值有限。这套思路对其他 App 通用吗?
回复

使用道具 举报

0

主题

376

回帖

376

积分

UID
420254
贡献
0 点
钻石
0 个
C币
2 个
发表于 2026-9-17 18:46:43 | 显示全部楼层
App 侧的安全基本靠客户端自觉,服务端校验才是最后一道。
回复

使用道具 举报

0

主题

372

回帖

38

积分

UID
532405
贡献
0 点
钻石
0 个
C币
2 个
发表于 2026-9-17 18:49:05 | 显示全部楼层
反调试这块的坑最多,建议先把常见检测点列一遍。你们环境是怎么解决版本兼容的?
回复

使用道具 举报

0

主题

346

回帖

43

积分

UID
296568
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 18:52:44 | 显示全部楼层
通信协议那层如果能抓到明文,能省掉大量逆向工作。
回复

使用道具 举报

0

主题

373

回帖

51

积分

UID
686264
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 18:55:58 | 显示全部楼层
现在的防护思路是增加时间成本,让你算不过来。这类分析一般要多久能出结果?
回复

使用道具 举报

0

主题

399

回帖

0

积分

UID
899234
贡献
0 点
钻石
0 个
C币
0 个
发表于 2026-9-17 18:59:22 | 显示全部楼层
建议把分析过程记录下来,下次遇到类似的能省一半时间。你们环境是怎么解决版本兼容的?
回复

使用道具 举报

0

主题

380

回帖

39

积分

UID
804436
贡献
0 点
钻石
0 个
C币
1 个
发表于 2026-9-17 19:02:54 | 显示全部楼层
混淆只能提高门槛,不能真正阻止有心人。有没有推荐的入门资料?
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部