环境: macOS11.6
之前做过一些Web端以及android的逆向,但是到了ios中发现学起来还是有许多疑问,也多亏发现了IOSRE这个社区,通过一些前辈和朋友的经验,也快速建立了一个IOS逆向的逻辑
抱着学习的目的,正在做tiktok的逆向学习,首先对tiktok砸壳以及头文件导出,惊喜的发现有2万多头文件, 这实在太多了
操作步骤:
接下来通过工具抓包,分析TikTok的协议
发现了下面这个有意思的链接,开始分析
https://log-va.tiktokv.com/service/2/device_register/?device_id=7045140610143045126&is_activated=1&aid=1233&tt_data=a&residence=CN&device_id=7045140610143045126&os_version=14.4&iid=7056750119333529350&app_name=musical_ly&locale=zh-Hans&ac=WIFI&sys_region=US&js_sdk_version=1.77.0.2&version_code=21.1.0&channel=App%20Store&op_region=US&tma_jssdk_version=1.77.0.2&os_api=18&idfa=7E5D5F01-FB0C-4EF1-BD55-577702F5C4D4&idfv=7E5D5F01-FB0C-4EF1-BD55-577702F5C4D4&device_platform=iphone&device_type=iPhone13,4&openudid=d1ee6abb2b2451505a6012d88632ed978fd142ec&account_region=&tz_name=Asia/Shanghai&tz_offset=28800&app_language=zh&carrier_region=US¤t_region=PL&aid=1233&mcc_mnc=26001&screen_width=1284&content_language=&build_number=211023&language=zh&cdid=34629298-77BE-4CF0-818E-CED343196E46&uoo=1&app_version=21.1.0
Request:
POST /service/2/device_register/?device_id=7045140610143045126&is_activated=1&aid=1233&tt_data=a&residence=CN&device_id=7045140610143045126&os_version=14.4&iid=7056750119333529350&app_name=musical_ly&locale=zh-Hans&ac=WIFI&sys_region=US&js_sdk_version=1.77.0.2&version_code=21.1.0&channel=App%20Store&op_region=US&tma_jssdk_version=1.77.0.2&os_api=18&idfa=7E5D5F01-FB0C-4EF1-BD55-577702F5C4D4&idfv=7E5D5F01-FB0C-4EF1-BD55-577702F5C4D4&device_platform=iphone&device_type=iPhone13,4&openudid=d1ee6abb2b2451505a6012d88632ed978fd142ec&account_region=&tz_name=Asia/Shanghai&tz_offset=28800&app_language=zh&carrier_region=US¤t_region=PL&aid=1233&mcc_mnc=26001&screen_width=1284&content_language=&build_number=211023&language=zh&cdid=34629298-77BE-4CF0-818E-CED343196E46&uoo=1&app_version=21.1.0 HTTP/1.1
Host: log-va.tiktokv.com
Connection: keep-alive
Content-Length: 854
aid: 1233
X-SS-Cookie: msToken=MEZeHnnHvf0JB6ImvyUDHjSrs8hqC7-7Pd3XtkS__OsW6FPPJF_1xzgtPxFgAg0QMqFklXs3eJP5Myj8WLAHQuiKXw==; install_id=7056750119333529350; ttreq=1$531e073446baf1b2848aeb9ddcb22ba858b6d5cb; reg-store-region=US; store-country-code=tw; store-idc=useast2a; passport_csrf_token=985d5bc65bb7713fa98382742fac54c6; passport_csrf_token_default=985d5bc65bb7713fa98382742fac54c6; odin_tt=078823e42b2a1bce6f4b4e23760c622030ea2ed0402aa7e8cb58a4bfc1e3ee4ceaa730016ec9ef69950eb911f163d6662a2e02122fbaa079f54c7e4888e02d5a3e6fec3251743cf8085fcdf6d9cd7fa2
sdk-version: 2
Content-Type: application/octet-stream;tt-data=a
User-Agent: TikTok 21.1.0 rv:211023 (iPhone; iOS 14.4; zh_CN) Cronet
x-vc-bdturing-sdk-version: 2.2.0-rc.3
tt-request-time: 1644301413065
Cookie: odin_tt=078823e42b2a1bce6f4b4e23760c622030ea2ed0402aa7e8cb58a4bfc1e3ee4ceaa730016ec9ef69950eb911f163d6662a2e02122fbaa079f54c7e4888e02d5a3e6fec3251743cf8085fcdf6d9cd7fa2; passport_csrf_token=985d5bc65bb7713fa98382742fac54c6; passport_csrf_token_default=985d5bc65bb7713fa98382742fac54c6; store-country-code=tw; store-idc=useast2a; reg-store-region=US; install_id=7056750119333529350; ttreq=1$531e073446baf1b2848aeb9ddcb22ba858b6d5cb; msToken=MEZeHnnHvf0JB6ImvyUDHjSrs8hqC7-7Pd3XtkS__OsW6FPPJF_1xzgtPxFgAg0QMqFklXs3eJP5Myj8WLAHQuiKXw==
x-tt-dm-status: login=0;ct=1
passport-sdk-version: 5.12.1
Accept: application/json
x-tt-request-tag: t=0;n=0
X-SS-STUB: 5962F29A40C61D1AA45829C7A0DC8D97
x-tt-store-idc: useast2a
x-tt-store-region: tw
x-tt-trace-id: 00-d8006c481061c55e0ee44146061d04d1-d8006c481061c55e-01
Accept-Encoding: gzip, deflate
X-Ladon: WMYLWIKVfVJoynmaflD+ErdjdjYWar8WPv6kAGln4W8ZCB56
X-Khronos: 1644301413
X-Argus: ajILHYxQJT7Qhmj3MtwpWYoup7b6oa6RPRClaNOYkxxxUp5QVv31jCYtVerkIT6uDZ7HENSDgIQKcJVtJm+T+HBhKh9Mdvd8v3iu0m/vfBL4bP2rlfFwd2quaADLiHxWwAlGAFmtwqvYRiI02buymqUHstw8NhP5UcCJsDhoxNjSgP23r9eIgOKKyoCivRZgtRQ8A1C9MbpppWV8zSa+XY239N57kOIrC5LqWNIB1Qq/Iw==
X-Gorgon: 840400870000d382dcd5bcb8c896adce30d1756065e1fd92385e
Response:
{
"server_time": 1644301416,
"device_id": 7045140610143045126,
"install_id": 7056750119333529350,
"device_id_str": "7045140610143045126",
"install_id_str": "7056750119333529350",
"new_user": 0
}
通过上面的链接,请求与返回,以及接口名称来说,这个接口应该是进行设备注册,当打开TikTok之后就会给你的设备进行一个标记并且发送给TikTok的服务端
那么我的学习目标就是通过逆向,获取到组成这个链接的参数的方法,以及一些协议头的加密方法.
目前正在找device_id的生成方法
device_id=7045140610143045126
根据我的理解,首先先要拿到关于这个deviceid这个变量的方法,但是我从头文件中发现包含这个deviceid方法的文件大概有8000左右,随便挑选了几个进行hook 使用frida-trace和cycript进行跟踪调试,发现并不是想要的结果.
于是我产生了一个思路就是,我能否实时监测tiktok从启动开始,在内存中变量的值,当发现这个值出现得时候像frida-trace一样返回他的方法名与类名
我尝试了很多工具基本上都是只能在知道类名和方法名或者模糊情况下,一点点的筛选,并没有这样的工具,所以我正打算尝试看看是否能够通过 结合 frida-trace或者cycript这样的工具 ,写一个上面思路那样的小工具
只是不知道我这个思路是否有问题,又或者有前辈和朋友有更好的经验来解决这个问题,因为我本身也才接触不久,所以很希望能够得到你们的指点。如果可以那将会是我的荣幸!