乐趣区

关于大数据:抖音协议抖音数据采集中的加解密算法实现

iOS 版抖音协定中的加解密算法实现
前两年的工作中波及到抖音协定的剖析局部,剖析了两个跟加密无关的接口,我的项目完结了,现拿进去与大家分享
因为我的项目完结,最新版本是否有改变不分明了,过后测试可用的抖音版本:IOS 1.7.8-3.8.0

1. 设施信息生成计划:

设施信息中有几个重点:
(1) carrier、display_name 字段:这个字段不是 utf- 8 编码,是 GBK 编码,要做编码转换
(2) Idfa、VendorID 字段:规范 UUID 算法生成即可
(3) Openudid:这个中央有点头疼,依据所有公开材料,包含抖音本人的代码逆向,都能够看进去实际上是随机生成的,然而随机的没法通过服务器校验,最初应用了真 Openudid 替换掉两头 16 字节的办法,服务器通过率在 60% 左右

2./service/2/device_register/ 接口加密算法:

device_register 接口中 post 包体是加密的,算法实际上是 AES,然而不晓得为何规范 AES 实现跑进去的后果不对,不过没关系,间接从 IDA 伪代码里扒进去即可,两头有 5 处要修复 xray 的寄存器解析谬误。

3.MAS、AS、TS 算法:

这部分最头疼,花了很多工夫始终想脱机跑,首先伪代码难以修复,因为有两个问题没法解决,1.ios 的 native API 调用(例如线程锁)2. 类的上下文没法初始化,而后 Unicorn 模仿汇编代码也是一样的问题,没法解决 native API 调用,最初采纳了 Hook 抖音 app 的 encryptDataWithTimeStamp:parameters 函数,而后在 Hook 代码中阻塞线程,跑个 webserver,让抖音 app 本人初始化类并且筹备上下文,而后 webserver 负责解决加解密,并且返回 MAS AS TS

源码构造简略阐明:

1.API 是所有加解密的接口,负责给其余须要抖音加解密的业务提供加解密服务,用 golang+ C 混编实现,device_reg 的加解密是 C 写的库文件,通过调用桥调用 so,下个局部会阐明。
2.aweme-aes 是 device_reg 的加解密实现,纯 C 代码,编译进去是 so 库,供下面下面的 API 调用。
3.ios_aweme_lib 的性能是 golang-> 抖音 app2lib 的桥接,调用流程是 API ->ios_aweme_lib -> 抖音 lib,因为晚期的计划是把抖音 app2lib,而后通过 golang 写的 webserver(穿插编译到 ios)调用这个桥接库,而后调用抖音 app,实现 encryptDataWithTimeStamp,起初间接采纳阻塞 app 跑 webserver 的计划后废除了。
4.ios_webserver,这是 Hook 抖音 app 并阻塞 encryptDataWithTimeStamp 而后跑 webserver 的实现,框架是 monkeydev,框架代码没上传,github 上有搜 monkeydev 就行。
——————————————————————————————————————————

TiToData:业余的短视频、直播数据接口服务平台。

更多信息请分割:TiToData

笼罩支流平台:抖音,快手,小红书,TikTok,YouTube

退出移动版