抖音APP接口签名算法分析
抖音作為一款日活超過(guò)1億的優(yōu)秀APP,其客戶端與服務(wù)端的通信方式很值得APP開(kāi)發(fā)者去研究和學(xué)習(xí),為了保護(hù)其數(shù)據(jù),客戶端請(qǐng)求數(shù)據(jù)的接口都進(jìn)行了加密,未經(jīng)過(guò)加密處理的url,請(qǐng)求的時(shí)候不會(huì)返回?cái)?shù)據(jù),這里以最新的3.0版本為例,分析一下加密算法。
https://api.amemv.com/aweme/v1/feed/?manifest_version_code=310&_rticket=1541061729354&pull_type=2&app_type=normal&iid=48910484145&channel=aweGW&device_type=Redmi+5A&language=zh&type=0&uuid=868661038685020&resolution=720*1280&openudid=7664f169100e4e94&update_version_code=3102&os_api=25&max_cursor=0&filter_warn=0&need_relieve_aweme=0&dpi=320&ac=wifi&device_id=58329658832&os_version=7.1.2&count=6&version_code=310&is_cold_start=0&volume=0.0&app_name=aweme&req_from=&version_name=3.1.0&js_sdk_version=&device_brand=Xiaomi&ssmix=a&device_platform=android&min_cursor=-1&aid=1128&ts=1541061729&as=a1e58b7dd1960b1c1a4355&cp=bc64b9541ca0d2c8e1cDgM&mas=01b9fcc9ce21a0deb29046deb46e30350aacaccc2c868cc68c460c
上面的url用于抖音首頁(yè)推薦列表數(shù)據(jù)的請(qǐng)求,可以看到除了一些設(shè)備、網(wǎng)絡(luò)、渠道等相關(guān)信息以外,url尾部有as、cp和mas三個(gè)參數(shù),這三個(gè)參數(shù)用于加密url,它們是根據(jù)前面的參數(shù)計(jì)算出來(lái)的。我們先看一下Java部分:
大概的計(jì)算流程如下:可以看到抖音url加密算法的核心部分采用c/c++語(yǔ)言來(lái)實(shí)現(xiàn),對(duì)native部分的逆向分析比java部分難度更大,而且抖音增加了反調(diào)試技術(shù)并且對(duì)native函數(shù)的名字進(jìn)行了混淆,對(duì)代碼邏輯進(jìn)行ollvm混淆,進(jìn)一步增加了分析的難度;通過(guò)分析,我們發(fā)現(xiàn)抖音的加密算法在libcms.so中,利用IDA靜態(tài)分析加上inline hook技術(shù),我們找到了getUserInfo的native實(shí)現(xiàn)函數(shù)sub_26750(0x26750是函數(shù)的相對(duì)so文件起始位置的偏移):
Lcom/ss/sys/ces/a;->e([B)[B的native實(shí)現(xiàn)函數(shù)是sub_2f1c8()native部分的具體細(xì)節(jié)這里不在列出,大家可以參考看雪論壇上的兩篇文章:
最后,對(duì)抖音API加密算法感興趣的朋友,可以聯(lián)系我。 其他APP API簽名算法分析可以參考下面的文章:
轉(zhuǎn)載于:https://juejin.im/post/5be0306551882516bc47767b
總結(jié)
以上是生活随笔為你收集整理的抖音APP接口签名算法分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android Hook Activit
- 下一篇: 查找美国州名