|
查看: 58|回复: 57
|
[相关教程]
微信小程序反编译:解包wxapkg还原wxml和js完整流程
[复制链接]
|

UID2
贡献9 点
钻石7 个
C币993 个
|
为什么要反编译小程序
上周要逆向一个商业小程序的接口加密逻辑,没源码,只能从手机里把包抠出来反编译。微信小程序的包是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手动补。
- # 解密加解包一条龙
- python wxapkg.py unpack -i _112233_.wxapkg -o ./out
- # 还原wxml
- node wcc ./out/app-service.js > app-service.wxml
- # 找接口
- grep -rn "wx.request" ./out
- 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
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:42:11
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:44:03
|
显示全部楼层
|
这类技术更新的频率很高,老教程参考价值有限。这套思路对其他 App 通用吗? |
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:46:43
|
显示全部楼层
|
App 侧的安全基本靠客户端自觉,服务端校验才是最后一道。 |
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:49:05
|
显示全部楼层
|
反调试这块的坑最多,建议先把常见检测点列一遍。你们环境是怎么解决版本兼容的? |
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:52:44
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:55:58
|
显示全部楼层
|
现在的防护思路是增加时间成本,让你算不过来。这类分析一般要多久能出结果? |
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 18:59:22
|
显示全部楼层
|
建议把分析过程记录下来,下次遇到类似的能省一半时间。你们环境是怎么解决版本兼容的? |
|
|
|
|
|
|
|
|
|
|
发表于 2026-9-17 19:02:54
|
显示全部楼层
|
混淆只能提高门槛,不能真正阻止有心人。有没有推荐的入门资料? |
|
|
|
|
|
|
|
|
温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!