Tiktok版本: 33.2.5 (24年1月25日)
1、前言
通过对Tiktok抓包发现TikTok的所有http请求的头部增加了参数签名(x-argus、x-goron、x-khronos、x-ladon): 2、获取关键函数
直接将apk文件用jadx工具反编译,搜索关键字x-argus等,未搜索到任何关键字:
使用frida hook java层 Header对象的构造方法,发现有监控到https请求头设置,但是始终没有发现签名字段接着尝试hook interceptor拦截器,打印出请求头部,结果输出的请求头部中还是没有签名字段Java层找了一遍始终找不到签名关键字符串,那很大可能是在native层设置,在native层在 https请求发出时进行设置。TikTok使用 cronet网络库 。将libsscronet拖IDA反编译,搜索 x-gorfon 关键字,确实找到了:
结合 cronet源码,找到Native层设置请求Header函数:定位到该libsscronet中偏移为:0x2C44BC,HOOK该地址并打印出参数:这次全部头部都可以看到了,完美!
然后打印设置参数签名字段时的调用栈:有两处调用,分别是 0x3a662c 和 0x2c4b78:
分别对两处进行反编译分析,0x3a662c 更像是tiktok定制的设置相关header处,关键代码反编译:
v128是从某个函数调用返回的结果,对该结果分割处理就得到了参数签名字段,因此用frida hook这里,然后输出调用时的两个参数查看
直接对0x3A658C地址进行HOOK,并打印出x0和x1寄存器的值,同时打印出X23寄存器的值:输出如下:参数1是https请求的url,参数2看起来是https请求的header, X23的地址位于 libmetasec_ov.so模块的0x88ee0处。这样基本可以确定0x88ee0 是获取签名的关键函数。对该函数HOOK并打印参数和返回值:如上,确定无误,四个签名字段和值是一块返回,以行分割后分别设置在请求头中。3、直接调用
废话不说了,直接上代码:测试通过
var Header = Java.use("X.2jn");
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-285623.htm
[原创]unidbg直接调用tiktok so生成签名
186 浏览
14 回复
感谢分享
感谢楼主
感谢分享
感谢楼主
感谢分享
感谢分享
牛逼
无
最后于 2025-2-18 21:20
被mb_tkrgetye编辑
,原因: 已经解决
最后于 2025-2-18 21:20
被mb_tkrgetye编辑
,原因: 已经解决
膜拜大佬
牛逼
火钳刘明
牛逼
学习学习
非常好