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