0
点赞
收藏
分享

微信扫一扫

快手__NS_sig3 sig3算法分析

 sig3定位

 

1、Jni_Onload 定位doCommandNative函数位置

    RegisterNatives函数位于sub_88F4中。快手__NS_sig3 sig3算法分析_快手爬虫爬数据

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该函数,结果如下:

快手__NS_sig3 sig3算法分析_快手爬虫爬数据_02

抓包的结果如下:

快手__NS_sig3 sig3算法分析_快手算法分析_03

可以看到sub_3E550函数的返回值是sig3算法部分结果,并且该函数调用了两次,第一次是要加密的内容,第二次是一个base64的值。下一步开始还原该算法。

4、sub_3E550函数还原

sub_3e550函数部分片段如下:

快手__NS_sig3 sig3算法分析_快手__NS_sig3算法_04

点击dword_9e338查看

快手__NS_sig3 sig3算法分析_快手算法分析_05

很明显这是sha256算法的常量表,该函数是sha256的变形。话不多说,开始调试。
用肉丝姐的反调试rom直接附加,成功断下。

快手__NS_sig3 sig3算法分析_快手爬虫爬数据_06

开始愉快的trace之旅。

最后根据trace文件成功还原该算法。

快手__NS_sig3 sig3算法分析_快手爬虫爬数据_07

除了ida trace之外还可以使用unicorn进行trace,个人认为unicorn trace的结果要比ida trace的结果好分析一些。

5、sub_3FDA4 算法还原。

frida hook sub_3fda4结果如下:

快手__NS_sig3 sig3算法分析_快手爬虫爬数据_08

可以看到,经过sha256算法的返回值在经过这个函数,把sub_3FDA4 函数的结果在经过base64之后在进行base64就是sig3算法的部分值。同样,trace之后进行还原。

快手__NS_sig3 sig3算法分析_快手__NS_sig3算法_09

这两个位置的值,是读取图片的数据之后加密获得的,具体没去跟,因为同一个版本这个值不会变所以dump出数据就行,有兴趣的可以去跟下。至此sig3算法的部分还原完成。

6、剩余部分算法还原。
sig3后面的部分已经还原,但前面部分并没有, 经过一系列的查找,确定算法位置为sub_24404

快手__NS_sig3 sig3算法分析_快手算法分析_10

与当前时间戳异或一个值后进行进行加密。




3、算法验证

直接上图吧

计算sig3

快手__NS_sig3 sig3算法分析_快手算法分析_11

计算sig

快手__NS_sig3 sig3算法分析_快手算法分析_12

然后使用fiddler模拟请求成功,出数据!本教程只用来学习,请勿非法使用,如有侵权请联系我q 1610199291 删除!

快手__NS_sig3 sig3算法分析_快手爬虫爬数据_13

可以加好友 一起交流!


举报

相关推荐

NS-3——学习(3)

ns-3 教程

ns3学习

A NetAnim example for ns3

eclipse调试NS3

ns-3 third.cc

Ubuntu下安装NS3

0 条评论