抖音通信协议的加密算法是目前最完善的了,一些关键函数都被VM混淆过 ,比如设备注册、视频信息等常用接口,只能通过动态调试跟踪去理解其过程。
我们先来分析一下常用的设备注册是如何生成的,这是请求抖音接口的第一步,如果没有它,请求抖音的任何接口都不会返回数据的。
1.抖音的设备注册接口
https://log.snssdk.com/service/2/device_register/?
method:POST
body:设备信息加密数据
url参数:设备信息参数
2.设备信息参数生成
device_id的生成是根据我们提交给抖音里的参数进行计算的,所以我们要随机生成一些参数。
重点参数:
carrier
display_name字段:这个字段不是utf-8编码,是GBK编码,要做编码转换
Idfa、VendorID字段:标准UUID算法生成即可
Openudid:随机生成的
跟踪调试过程省略……
通过动态调试最后定位到sub_101E7830设备加密函数
sub函数的参数是传入一个字典
{
fingerprint = "";
header = {
access = WIFI;
aid = 1128;
"app_language"