i白羽 发表于 2024-4-18 22:57:56

微信小程序逆向之牛仔城签到接口逆向

本帖最后由 i白羽 于 2024-4-18 23:11 编辑

智谱清言说:
大家好,今天我将为大家带来一篇关于微信小程序逆向之牛仔城签到接口逆向的技术分享。在这篇文章中,我们将一起探讨如何逆向牛仔城微信小程序的签到接口,并分析其背后的原理。

开始直播,在后面楼层更新,由于已经逆向成功了,现在只是重新复现。

参考贴:
[技术分享|微信小程序绕过sign签名思路](https://cloud.tencent.com/developer/article/2311047)

使用工具:
[反编译小程序工具](https://github.com/ezshine/wxapkg-convertor/releases/tag/1.0.1)
[解密小程序源码工具](https://rainkill.lanzouj.com/iwmjL1vmre2d)

### 建议打开【仅查看作者】
### 建议打开【仅查看作者】
### 建议打开【仅查看作者】

i白羽 发表于 2024-4-18 23:03:55

这边推荐再下一个(https://www.voidtools.com/zh-cn/downloads/),方便你找到`.wxapkg`结尾的文件,除非你能准确知道小程序的存放路径就可以不用。


打开我们的微信PC,然后登录🤣

搜索【疯狂牛仔城】微信小程序
!(data/attachment/forum/202404/18/230054i72qrnhhp9r9nne2.png)
!(data/attachment/forum/202404/18/230252qpzp4z0mxzsldimw.png)

然后点开小程序,这时候进入小程序后,多点击几个功能,比如什么登录啊,我的,主页,活动和二维码都点击一下,方便让小程序把需要的文件都下载完成。
!(data/attachment/forum/202404/18/230318jlrxps4ci49r4i9p.png)

i白羽 发表于 2024-4-18 23:10:31

打开everything,开始我们的搜索!

!(data/attachment/forum/202404/18/230601w712viygfbee1v4b.png)

直接搜`.wxapkg`,选择修改时间-倒序
!(data/attachment/forum/202404/18/230818ja0e6mpyzkw9pe2k.png)

找到最新的`_APP_.wxapkg`文件,拷贝一份到新建的文件夹,或者哪里都行
!(data/attachment/forum/202404/18/231017vco2hc2ouz2e2924.png)

i白羽 发表于 2024-4-18 23:14:20

当然,到这一步,你可能想问,你都没和我说怎么抓签到接口啊!😅

我想说,不好意思我忘了😋

这边你再下载一个抓包工具,叫`HTTP Debugger Pro`,或者你有可以抓到微信小程序的抓包工具都可以用

然后,打开`HTTP Debugger Pro`,这是他的页面。
!(data/attachment/forum/202404/18/231409kwgq2tgyyhr4qjt4.png)

i白羽 发表于 2024-4-19 10:30:52

开始抓包,点击一下签到,然后抓到该请求。
!(data/attachment/forum/202404/19/102923afryubd03cc78dgg.png)!(data/attachment/forum/202404/19/102925z10l4mn1mpprzm42.png)
我们可以发现,通过抓包,发现有个doGrow,经过翻译,可以大致推断他就是签到接口
!(data/attachment/forum/202404/19/103033qrl4qi51nixb8lx1.png)

i白羽 发表于 2024-4-19 10:36:20

通过接口response返回,可以看到request发送了如下json
```json
{
   "member_no" : 9999,
   "sign" : "2675c58926fe37d01a39874b6e210486",
   "store_no" : 12,
   "time" : "20240418200528",
   "type" : 12
}

```

通过询问GPT,可以得知:
member_no:表示会员编号,这里的值为44246,可能是指一个特定会员的唯一识别码。
sign:通常表示一个签名或者校验码,用于验证数据的完整性和真实性。这里的值“2675c58926fe37d01a39874b6e210486”可能是一个通过特定算法生成的签名。
store_no:表示商店编号,这里的值为12,可能指的是特定商店的编号。
time:表示时间,这里的值“20240418200528”看起来是一个时间戳,格式可能是YYYYMMDDHHMMSS,即2024年4月18日20点05分28秒。
type:表示类型,这里的值为12,具体指什么类型需要根据上下文来判断,比如可能是指交易类型、消息类型等。
!(data/attachment/forum/202404/19/103503hpo6eoopeju1fjof.png)

并且可以看到,返回了如下json
```json
{
   "data" : null,
   "errorCode" : 0,
   "errorMessage" : "领取成功",
   "filename" : null,
   "success" : true,
   "url" : null
}
```

尝试重发请求,修改time值为20240419200528 原time值为:20240418200528
!(data/attachment/forum/202404/19/103159mchn8tfou9uyy1mf.png)

!(data/attachment/forum/202404/19/103616lh5k555fku8f55j8.png)

i白羽 发表于 2024-4-19 10:39:23

使用APIFOX发送请求可以发现,只修改time会出现416错误返回:
```json
{
    "Message": "出现错误。"
}
```
!(data/attachment/forum/202404/19/103904xgmgwp8guh8uhv24.png)

i白羽 发表于 2024-4-19 10:41:27

由此可以判断,只修改time是没法进行签到的,需要一同把sign修改了,可是我们该如何得到sign值呢?
通过长度判断,可以发现sign是md5的32位长度,猜测是md5加盐了
!(data/attachment/forum/202404/19/104112uzn16oao6z86wi66.png)

i白羽 发表于 2024-4-19 10:46:39

接下来开始解密`__APP__.wxapkg`

打开`UnpackMiniApp.exe`
!(data/attachment/forum/202404/19/104243np452v54kf92epz2.png)

**注意:__APP__.wxapkg请不要拷贝到其他地方,`UnpackMiniApp.exe`需要知道小程序id才能进行解密,上面说错了**

!(data/attachment/forum/202404/19/104541pqt06vt5ye5pgkf7.png)
!(data/attachment/forum/202404/19/104605v5m7n5jnvzz1b770.png)
!(data/attachment/forum/202404/19/104622fyzj6y27z9nj2vy5.png)

然后打开`\wxpack\`目录

i白羽 发表于 2024-4-19 10:50:10

找到如下文件`wx28881238baa06aeb.wxapkg`

!(data/attachment/forum/202404/19/104724kr22p6l12v64f22y.png)
!(data/attachment/forum/202404/19/104805p7fsffnjaj3d28fa.png)

然后打开`wxapkgconvertor.exe`,把`wx28881238baa06aeb.wxapkg`拖进去
!(data/attachment/forum/202404/19/104930xhhxqu2ahz2huah4.png)


反编译成功,生成了`wx28881238baa06aeb`目录
!(data/attachment/forum/202404/19/104958bnktb9ka9gg53rdq.png)
页: [1] 2
查看完整版本: 微信小程序逆向之牛仔城签到接口逆向