-
-
[分享]某短视频平台最新sig3字段算法分析(一)
-
发表于:
2025-1-12 16:13
51805
-
[分享]某短视频平台最新sig3字段算法分析(一)
最近看到手里的某短视频APP来了兴致,特意拿来分析记录下,整个系列文章大概分为抓包,java层分析,so定位,so去花,unidbg,算法还原等几个部分,这几篇文章会记录下我的整个调试过程,前面的文章会比较基础,入门级玩家基本可以略过了,因为考虑到文章的连续性我这边还是会记录发表下。
因为需要对关键字段的算法进行分析,所以个人习惯还是要先抓下协议看一下,先不管别的用BurpSuite抓个包出来看下

抓到后总体感觉进包速度跟APP的流量不太匹配,感觉大概率是走了其他协议。既然抓到的包里面有sign字段,就先从sign字段入手看下,

用frida hook看下调用栈

后面根据调用栈顺藤摸瓜分析就好,最后找到了发送函数发现跟okhttp有关

试着将okhttp的接口发送与接收接口打印一下看看

找到了__NS_sig3字段,这个是我们需要分析算法的字段,之前Burp Suite抓不到包的原因也出来了,走的是quic协议。
直接在代码搜索__NS_sig3进行定位

一直往里面进





调用接口找到了

直接搜索C0526k开始




至此,so与调用so的接口都确定下来了。
将定位到的lib文件导入IDA,f5之后发现 JNI_OnLoad出现jumpout了

直接汇编先分析一下
从注释基本都可以看出来,前期开栈到恢复栈,就弄了一堆花里胡哨的算了下绝对跳转地址,x0与x1未变化,也比较符合花指令的特性。只要把前面的垃圾指令nop掉,绝对跳转改成相对跳转即可。
先手动使用IDA插件Keypatch试一下,先nop掉垃圾指令。


在修改跳转指令为相对跳转


修改完需要导入patch到so中

重新用IDA打开按F5即可生效,但是一个个修改比较麻烦,还是需要用脚本根据特征码定位进行修改会比较方便,对比JNI_OnLoad与JNI_UnLoad就会发现特征码比较明显

传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!