HONGLINCHEN 发表于 2021-9-13 16:02

快手__NS_sig3参数算法分析研究学习过程

最近要做一些数据分析,所以来研究一下快手的sig3参数的来源!sig3参数的定位 入口
1、Jni_Onload 定位doCommandNative函数位置RegisterNatives函数位于sub_88F4中。
https://pic3.zhimg.com/80/v2-328936d00e431077b6370d4e0a366616_720w.jpg

https://pic3.zhimg.com/80/v2-e36b6dc5de3e39cc84f3cdf5b1c316be_720w.jpg

https://pic1.zhimg.com/80/v2-bd3c0e3984847dfea1492087b2484a98_720w.jpg

sub_c060为doCommandNative.初探sub_c060函数.起初看到sub_c060函数时头皮发麻,ollvm混淆的太乱太美观,导致ida f5都巨慢,查找交叉引用,结合frida一步步的确定目标函数。sub_c060->sub_26BB8->sub_3AE54->sub_3AAF8->sub_3F920->sub_3E550.hook sub_3E550函数看结果.使用frida hook该函数,结果如下:
https://pic2.zhimg.com/80/v2-ab58bf979fcd5c655b0972dfe64553b9_720w.jpg

抓包的结果如下:
https://pic3.zhimg.com/80/v2-0bccf6355c0be737c209cf6b018d1de6_720w.jpg

可以看到sub_3E550函数的返回值是sig3算法部分结果,并且该函数调用了两次,第一次是要加密的内容,第二次是一个base64的值。下一步开始还原该算法。
4、sub_3E550函数还原sub_3e550函数部分片段如下:
https://pic2.zhimg.com/80/v2-2c14cfa22427f794d34825f8a8c6b301_720w.jpg

点击dword_9e338查看
https://pic1.zhimg.com/80/v2-e1a94439fbdd58bfb1548e69cc7cf3c8_720w.jpg

很明显这是sha256算法的常量表,该函数是sha256的变形。话不多说,开始调试。
用肉丝姐的反调试rom直接附加,成功断下。
https://pic1.zhimg.com/80/v2-efed889977e85d6c5f05b7175ff4a040_720w.jpg

开始愉快的trace之旅。通过框选区域发现,a3是来自a2.a方法,且str2通过上方代码得知是sig签名结果,b2是一个url,但是执行了b()可能进行了一些处理,这里暂时先不管b2数据是什么,先最终到最终a调用的地方。
https://pic3.zhimg.com/80/v2-88f99ea6b7c3ff54500ee12a269c0116_720w.jpg

最后根据trace文件成功还原该算法。
https://pic4.zhimg.com/80/v2-78bcd8c948d53c1aee726fc6bf7dad97_720w.jpg

除了ida trace之外还可以使用unicorn进行trace,个人认为unicorn trace的结果要比ida trace的结果好分析一些。继续跟进
https://pic2.zhimg.com/80/v2-e3cf0532265161173f6e1ccd2ed729e5_720w.jpg

5、sub_3FDA4 算法还原。frida hook sub_3fda4结果如下:
https://pic1.zhimg.com/80/v2-6eb686761b67a2e03c19070010ec9ae0_720w.jpg

可以看到,经过sha256算法的返回值在经过这个函数,把sub_3FDA4 函数的结果在经过base64之后在进行base64就是sig3算法的部分值。同样,trace之后进行还原。
https://pic3.zhimg.com/80/v2-8cc8f23bf04feade998786599184bbaa_720w.jpg

https://pic1.zhimg.com/80/v2-936e15338a4ed127e0e54a42bc8719b8_720w.jpg

这两个位置的值,是读取图片的数据之后加密获得的,具体没去跟,因为同一个版本这个值不会变所以dump出数据就行,有兴趣的可以去跟下。至此sig3算法的部分还原完成。6、剩余部分算法还原。
sig3后面的部分已经还原,但前面部分并没有, 经过一系列的查找,确定算法位置为sub_24404
https://pic4.zhimg.com/80/v2-0e513b83a98a577e11e16d9918782793_720w.jpg

与当前时间戳异或一个值后进行进行加密。
3、算法验证看下图 python源码 运行结果计算sig3
https://pic3.zhimg.com/80/v2-c166f420b64669686903e773e26d27b2_720w.jpg

计算sig 参数这个比较简单。
https://pic3.zhimg.com/80/v2-daa6d63d9f64914c82745b56ae3d2206_720w.jpg

然后使用fiddler模拟请求成功,出数据!大功告成,至此__NS_sig3和sig和__NStokensig已经全部搞定转了python源码和java源码。欢迎一起交流学习

HONGLINCHEN 发表于 2021-9-18 18:10

dajia88com 发表于 2021-9-18 11:39
来一份哇jia好说

你自己加我啊不是留的有qq

dajia88com 发表于 2021-9-18 11:39

HONGLINCHEN 发表于 2021-9-14 09:55
抖音是Xgorgon,我这里有源码最新版的

来一份哇jia好说

Light紫星 发表于 2021-9-13 16:47

很好很强大,就是有点废头发

咔c君 发表于 2021-9-13 21:30

不错学习了

2019upup 发表于 2021-9-13 21:54

膜拜大神!可惜是看不懂{:1_893:}

从那以后的你 发表于 2021-9-13 22:44

学习了,谢谢分享

dajia88com 发表于 2021-9-14 03:03

抖音的可以不?

HONGLINCHEN 发表于 2021-9-14 09:55

dajia88com 发表于 2021-9-14 03:03
抖音的可以不?

抖音是Xgorgon,我这里有源码最新版的

bhwxha 发表于 2021-9-15 10:14

HONGLINCHEN 发表于 2021-9-14 09:55
抖音是Xgorgon,我这里有源码最新版的

发一下?

nuller 发表于 2021-9-15 15:41

学习了,感谢。
页: [1] 2 3
查看完整版本: 快手__NS_sig3参数算法分析研究学习过程