在微信开发者工具中上传后,微信会对你的 JS 代码进行压缩混淆以及对 wxml、wxss 和资源文件等进行整合打包成一个 .wxapkg 文件上传给微信服务器。
思路
在手机上找到微信客户端下载保存在本地的小程序包。然后进行反编译。
工具
- iPhone 手机 (越狱的)
- Android 手机 (Root的)
- 电脑模拟器的Android也行
找到编译包目录
IOS:
- 在 Cydia,搜索并安装 iFile 或者 Filza 等文件浏览 App,打开 iFile 或者 Filza
- 到达目录 /path/to/WeiChat SandBox/Library/WechatPrivate/{UserId}/WeApp/LocalCache/release/
- 提取wxapkg文件,搞到电脑上(不管你用什么方法)
Android:
- 用 RE 文件管理器(或其它取得最高权限的文件管理器)
- 到达目录 /data/data/com.tencent.mm/MicroMsg/{UserId}/appbrand/pkg/
- 提取wxapkg文件,搞到电脑上(不管你用什么方法)
{UserId}
为当前登录的微信账号 Id
的 MD5
值(32 位字符串)
解包、反编译
解包后的结构
- app-service.js: 小程序工程中所有 JS 文件的汇总,已被混淆;
- app-config.json: 小程序工程 app.json 以及各个页面的 JSON 配置文件汇总,可直接查看;
- page-frame.html: 所有页面的 .wxml 和 app.wxss 样式文件的汇总,可读性差,需要还原;
- *.html: 包含每个页面对应的 .wxss 信息,可读性较好;
- 资源文件: 各类图片、音频等资源文件