某小程序反编译 Api-Sign 加密参数分析

js/小程序逆向 1 / 7

仅供学习研究 。请勿用于非法用途,本人将不承担任何法律责任。

前言

本次目标小程序,某盛优选
具体的小程序反编译流程这里就不说了,有啥问题可以加博主一起讨论

分析请求包

打开小程序,跟 charles 开始抓包,这里我们抓分类列表页的数据包

1-charles-01

请求的路径是 https://mall.xsyxsc.com/user/window/getProducts/v4 请求头里有个 hashApi-Sign,下面直接去反编译小程序分析 JS 代码

2-charles-02

这里可以看到 请求体里 还有个 bb 后面会说到

反编译分析 js

3-devtools-01

反编译成功之后导入,微信开发者工具,就是上图这种 (这里说明一下,有些小伙伴导入的时候可能会报一些,插件错误,或者语法错误之类的,百度一下就能找到解决方案了哈),我这个是修复成功之后的代码,可以正常运行

4-devtools-02

然后全局搜索 api-sign 定位到这里 T["Api-Sign"] = (0, u.default)(O + T["Api-Timestamp"] + s.default.httpSlot)) 调用了 u.default 函数有三个参数 O 在上面有定义,暂时不知道是什么稍后,动态调试一下就知道了,T["Api-Timestamp"] 就是请求头里的时间戳了,s.default.httpSlot 这个应该是盐值,可以全局搜索一下

5-devtools-03

是个固定值,暂时就不管它了,先动态调试看看 O 是个什么玩意

动态调试 JS

6-devtools-04

打开调试器,全局搜索 T["Api-Sign"] = (0, u.default)(O + T["Api-Timestamp"] + s.default.httpSlot)),然后下断点

7-devtools-05

首页的分类随便点击一个,成功断下来

8-devtools-06

这里输出相关的变量值,可以看到 O 最后就是 请求的 fromdata

9-devtools-07

再往下就是字符串的拼接了,然后调用 u.default 就是 md5 进行 hash 计算,结果是 5cfd32a50143ca6c571fe2660b586231,然后在使用 python 进行 md5 计算

10-python-01

结果也是没问题的,在写个 demo 测试逻辑是否正确

11-python-02

数据也是正常请求到了,没啥问题

今天的分析就到这里了,后续在分析前面说到的 bb 参数,这个比较头疼一点,因为代码都做了名称混淆,分析的时候,也都是体力活,先贴张图片预热预热

12-devtools-08

暂无评论
本文作者:
本文链接: https://www.qinless.com/?p=144
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 qinless 的博客!
100

发表评论

返回顶部