-
-
[原创]某谷米APP 请求接口sign值生成流程分析
-
发表于:
2026-4-26 21:59
1947
-
[原创]某谷米APP 请求接口sign值生成流程分析
地址:4oCLaHR0cHM6Ly9xaWd1bWkuY29t
对我这种新人很友好的一个逆向,顺便练练so逆向,算是新手村级别了
首先,抓不到包。
发现检测方式是NetworkSecurityTrustManager.checkPins,结合okhttp的一些检测:
一段frida脚本献上,spawn模式注入,直接干废
然后就可以开始寻找sign算法了。首先我们会想到直接hook messagedigest算法,但是很遗憾,这么一hook下来什么都找不到。静态分析搜索sign,找到一个请求拼接的函数。混淆的很气人,全部都是o,O,0三个字符,难以分辨。找到一个okhttp拦截器。smali还原后大概如下。这个包com.uxin看起来像个第三方sdk,但是实际上是他们自家的东西。
发现了sign字段的添加处。顺藤摸瓜,sign的函数找出来!
由construct可知这里进入了native层,其实我对so层逆向不太懂。先hook拿个sign的示例出来。
这个hook,卡拦截器上,直接拿到原始输入map和输出的sign。我给的示例,这应该是一个统计接口,也可以得知通向服务器的所有需要sign的请求都在此被签名。
本来打算直接unidbg了,但看sign出来应该是个md5,整个签名流程应该也没多复杂,ida,启动!
前面的加密流程,应该是对这个函数进行调用。首先我们要知道:EncodeTool1 是什么算法,名字像是 MD5/SHA/HMAC 的封装,看起来sign出来很md5,但万一是魔改算法呢?要看看情况。
注意到:
3614090360 = 0xD76AA478 ✅ MD5 Round1 第1个常数
3905402710 = 0xE8C7B756 ✅ MD5 Round1 第2个常数
好,不用往下看了,应该是md5,没啥问题。
得到这个maptoquery后,map拼接的方式也就出来了。
salt在哪里?
可恶!这一段卡我好久!!!
_encodedsalt点开可以获得一个字符串。本来想ida神力,这次出问题啦!
这里面哪有啊?一看ref是签名的globalvarinit,需要去找那个函数
看中间的adrl,有个salt!直接拼接美滋滋!
不对!生成的sign有问题!
第一次做的时候,我并没有注意这个小小的玩意。
直到sign生产出来用不了,我才发现,我去还有个这函数!不多说了,ida双击!
这段代码的逻辑看似简单:遍历输入字符串 text 的每一个字符:
[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。