2021-09-19

抖音协议抖音爬虫获取 init_gorgon()、x-gorgon加密算法

1、用到的工具等:

Charles (随便一个抓包工具即可,哪个顺手用哪个)

动态字段: x-gorgon:0408*** (开头)

抖音Version:12.8.0 (发帖时的最新版本)or 抖音极速版 (文件少,编译快)

IDA or JEB

Jadx-gui

frida

Pycharm

root 真机(Android) or 模拟器


2、反编译:

Apk 直接丢入 Jadx-gui or Apk==>zip ==> 解压 ==> .dex 全部打包丢入 Jadx-gui

查找关键字: x-girgon



查看调用处:

这个so 文件全名: libcms.so apk压缩包中可以找到。

接下来看看函数声明处:


代码不能被工具完美还原,试了几个工具都这球样,不用浪费时间折腾了。直接看吧,功底好的可以直接看Smali 代码。


可以看到r8 即为想要的值,向上查找r8


其中 com.ss.a.b.a.a() 是重载函数,hook时需要注意下


贴附一段Frida 代码: 注意overload("")


这块儿的代码是可以正常展示的,很好还原:


接下来到了难点:

byte[] r0 = com.ss.sys.ces.a.leviathan(r8, r7, r0)

这个不太好还原, 三个参数:


native 修饰的 leviathan ()函数, 对应的方法体在最早加载的 cms.so 中。

可以使用ida or jeb 进行查看,会发现没有到处函数,其使用了花指令混淆的加密措施。

破解难度太大,可以考虑换了一种简单的调用方式进行解决

优先推荐 : frida-rpc, 实现思路如下: 具体的自行完善

(我自己使用的java 进行主动调用的,想了解的可以关注留言)


这种方式比较简单,还可以开微服务。

其中传递进去的参数可以使用frida hook 进行获取


输出结果为:


参数1: -1

参数2: 十位时间戳(来自url参数中的十三位时间戳)同 x-khronos 相同。

参数3: post参数的data 部分,就是下图中的r0


参数整理:

r0 = md5(url?后的参数) 对网址的参数进行md5

r13 = x-ss-stub,只有post时才有效,否则是32个0

r11 = md5(cookie) 对cookie进行md5

r12 = md5(cookie[‘sessionid’]) 对cookie里面对sessionid进行md5,否则也是32个0

探讨交流可以加v:XiaGuJiShu

你可能感兴趣的:(2021-09-19)