前言
了解到前一段时间,火山小视频升级为了抖音火山版,想必其相应的安全措施也升级了吧,笔者本着学术交流的目的研究了一下抖音火山版的设备注册方法,也就是生成device_id与iid(install_id)的过程。从而找到了如何能够模拟生成这两个id,生成出来的这两个id在访问抖音火山版网络接口的时候证明有效,但是能否用于其他头条系应用就不得而知了,可供参考。
逆向
静态分析
静态分析也就是反编译,反编译软件很多,从基本的Apktool工具,到强大的jadx,还有也比较强大的JEB,有时候Android studio也能帮忙分析,之前也试过GDA也不错,笔者比较常用的还是jadx和JEB。工欲善其事,必先利其器,这句话在逆向分析的研究中太适配了。废话不多说,下面就开始吧。
jadx打开抖音火山版的apk文件,可以先找到AndroidManifest.xml文件,记录一下它的包名package=”com.ss.android.ugc.live”,然后呢?一脸懵,要不是看了前辈的工作才不知道要看什么,可以得知有个api很关键:https://log.snssdk.com/service/2/device_register/ ,那么就先搜索这个字符串吧,可以尝试搜索device_register或者service/2/device_register/等等可能的字符串都行,看看能找到什么代码。使用jadx具体操作的时候需要选择导航-》搜索文本,然后要等一会儿,因为它正在反编译,如下图所示:
反编译完之后可以试试查找文本:service/2/device_register/,发现有个类很可疑:…deviceregister.b.a.URL_DEVICE_REGISTER(),如下图所示:
点进去仔细瞧瞧。发现这是个构造url列表的函数,肯定有什么地方调用它了。然后按着control键寻找该函数的用例,发现除了它自己就只有一个地方调用它了,进入调用它的函数发现是未能正常反编译的函数,如下图所示:
可以看到有个DeviceRegisterThread字符串映入眼帘,然后就能大概知道这个类比较重要了,上面能看到它继承的Thread类,那么这就应该是设备注册请求网络部分的子线程了。唉,其实一开始笔者找到别的地方去了,一开始专注于分析这个device_id所在的本地缓存了,因为本地有缓存的时候会优先加