记录一次小程序逆向

发布于

## 需求

小区有个电动车的地下车库,需要用微信小程序扫码打开,充电也需要扫码。但是车库信号很差,经常加载不出来小程序,或者是加载出来了提示我没开会员。所以想做一个 APP ,直接把请求放我 APP 里,这样至少减小了网络流量,理论上来说应该不会再出现上面的情况了。

## 实现路径

### 解包

小程序的逆向工具已经很成熟了,我去 GitHub 随便搜了下 `wxapkg` 关键字就搜到了,用这个工具完成解包。

### 抓包

解包的部分很顺利,拿到了相应的接口及输入输出格式。但是他的接口需要鉴权,看了下实现是用 `wx.login` 获取的 code 去登陆的。他的大致原理是小程序调用 `wx.login` 从微信获取一个 code ,code 的有效期具体多久我忘了,反正很短。用这个 code 去调用小程序服务方的接口,服务方再去微信服务器验证 code 的合法性,验证通过则登陆。

如果要去模拟这个登陆,要么就去逆向微信或者微信开发者工具,但这个对我来说不现实,没这个技术,所以只能选择抓包看一下他服务器换取的 token 有效期是多久。

最开始我使用的是 eCapture 配合 MuMu 模拟器,在模拟器上登陆微信去抓包。刚刚打开微信就被封号了,包确实是能抓到,但是考虑到微信号我还要用,就没用这个方案了,太危险了。

后面我又到处找资料,无意间发现了一个工具:**WMPFDebugger**。这个工具的大致原理就是把微信小程序转发到一个 Chrome 调试端口上,可以实现在 Chrome 打开一个地址进入 Chrome DevTools 来调试。这下就好搞了,不管是日志还是请求都随便拿了。找到对应的请求,看返回的内容,结果发现是 JWT 鉴权,有效期是 5 个月。那到这里好像就结束了,5 个月轮换一次我也可以接受了。

### 后续

到这一步其实就没什么了,直接把接口和流程丢给 AI ,库库造一个 APP 出来就行了。

## 坑点

1. eCapture 需要 Linux 内核版本大于 5.5 。
2. 解包的时候如果没有对应的功能,可能是因为分了子包,需要点开相应的功能,不然解包没有这部分子包。
3. WMPFDebugger 需要微信版本支持,最新版的 WMPF 版本是 20089 ,可以在 Issues 里面找到对应的配置。

## 工具

- [wxapkg](https://github.com/wux1an/wxapkg)
- [eCapture](https://github.com/gojue/ecapture)
- [WMPFDebugger](https://github.com/evi0s/WMPFDebugger)

## 免责声明

1. **仅供学习与研究**:本文内容仅用于网络安全技术学习、协议分析及个人研究目的,旨在探讨小程序安全机制与本地网络优化方案。
2. **禁止非法用途**:严禁将文中提及的技术、工具或思路用于任何未经授权的系统入侵、数据窃取、商业牟利、破坏计算机信息系统等违法犯罪活动。
3. **合规使用**:使用者应确保相关操作已获得系统所有者或服务提供商的明确书面授权,并严格遵守《中华人民共和国网络安全法》、《中华人民共和国数据安全法》及相关法律法规。
4. **风险自负**:因使用本文所述技术或工具而导致的任何账号封禁、设备损坏、数据丢失、法律纠纷或其他直接或间接损失,均由使用者自行承担,作者不承担任何连带责任。
5. **尊重知识产权**:逆向分析所得的接口、协议及业务逻辑版权归原作者或原服务提供商所有,请勿擅自公开传播、商业化利用或用于搭建同类竞品服务。
6. **内容时效性**:文中涉及的工具版本、接口参数及平台规则可能随时间发生变化,请使用者自行验证其有效性与安全性,作者不对内容的持续准确性作任何保证。

---

原文链接:[点击查看](https://www.v2ex.com/t/1228153)

评论(13)

分享个冷知识:其实你可以把小程序码拍下来,等车插好电出了地库,再扫码付款就行了。

· 0 个赞

回复

主要是开门太费劲了,每次在门口干等一分钟。另外充电桩那边得先在设备上按按钮选插座,那个插座上的二维码是有时效的,过个 60 秒就失效了,没法在外面扫。

· 0 个赞

如果这种小程序能在 PC 端微信打开的话,直接在电脑上抓包会省事很多。

· 0 个赞

回复

确实,最后就是在电脑端微信抓的,方便很多。

· 0 个赞

膜拜楼主的折腾精神。换我的话早受不了直接去跟物业 battle 了,哈哈。

· 0 个赞

之前在 L 站看到有大佬发帖,说已经把 code 生成的逻辑给逆向出来了。

· 0 个赞

回复

楼上说的那个逆向 code 生成的,感觉有点扯淡吧,真没这么简单。

· 0 个赞

分包解包之后,有没有意外发现里面塞了一整部小猪佩奇 😂

· 0 个赞

回复

那倒没有,我其实就是把包解了,后面的活儿基本都是直接丢给 AI 去分析的。

· 0 个赞

楼主秀啊,和我去年的思路差不多!不过我是直接 root 手机配合 Xposed 搞定的:先用 wxapkg 拿源码参考,然后在手机上直接抓支付和选插口的接口,写个原生 App。授权过期(报 401 )就跳转回支付宝/微信小程序拿 Token,再通过 hook 截取存到自己的 App 里。现在充电爽多了,彻底告别小程序又臭又长的广告和流程。

· 0 个赞

抓包小程序的话,直接上 Reqable 就行,挺好用的。

· 0 个赞

现在有 AI 辅助确实方便,只要能把小程序的源码扒下来喂给 AI,剩下的流程让它帮你写就行了。

· 0 个赞

分享个冷知识,其实遇到车库没信号,可以先插好插座,把小程序码拍张照,等走出地库有网了再扫照片付款就行了。

· 0 个赞