日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

抖音APP接口签名算法分析

發布時間:2023/12/29 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抖音APP接口签名算法分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

抖音作為一款日活超過1億的優秀APP,其客戶端與服務端的通信方式很值得APP開發者去研究和學習,為了保護其數據,客戶端請求數據的接口都進行了加密,未經過加密處理的url,請求的時候不會返回數據,這里以最新的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用于抖音首頁推薦列表數據的請求,可以看到除了一些設備、網絡、渠道等相關信息以外,url尾部有as、cp和mas三個參數,這三個參數用于加密url,它們是根據前面的參數計算出來的。我們先看一下Java部分:

大概的計算流程如下:

  • 把url中的參數提取出來,按順序存到一個List中;
  • 獲取device_id;
  • 調用UserInfo.getUserInfo(ts, (String[]) list.toArray(new String[list.size()]), null, device_id)獲取一個44位加密后的字符串, 第1個參數是時間戳,第2個參數是第1步的list轉換成的數組,第4個參數是第2步獲取的device_id;這個方法是在native中實現;
  • 把第3步計算的字符串前22位賦值給as,后22位賦值給cp;
  • 調用Lcom/ss/sys/ces/f/a;->a(as.getBytes())[B獲取一個27位的byte數組,最終會調到Lcom/ss/sys/ces/a;->e([B)[B,這個方法也是native實現;
  • 把第5步計算的27位byte數組傳入Lcom/ss/android/common/applog/k;->a([B)Ljava/lang/String;,結果為54位的字符串,賦值給mas,k.a()的實現如下圖,走最后一個else分支;
  • 可以看到抖音url加密算法的核心部分采用c/c++語言來實現,對native部分的逆向分析比java部分難度更大,而且抖音增加了反調試技術并且對native函數的名字進行了混淆,對代碼邏輯進行ollvm混淆,進一步增加了分析的難度;通過分析,我們發現抖音的加密算法在libcms.so中,利用IDA靜態分析加上inline hook技術,我們找到了getUserInfo的native實現函數sub_26750(0x26750是函數的相對so文件起始位置的偏移):

    Lcom/ss/sys/ces/a;->e([B)[B的native實現函數是sub_2f1c8()

    native部分的具體細節這里不在列出,大家可以參考看雪論壇上的兩篇文章:

  • [原創]抖音接口加密簽名協議
  • 抖音簽名算法的逆向雜談
  • 最后,對抖音API加密算法感興趣的朋友,可以聯系我。 其他APP API簽名算法分析可以參考下面的文章:

  • 快手API簽名算法
  • 小紅書API簽名算法分析
  • 轉載于:https://juejin.im/post/5be0306551882516bc47767b

    總結

    以上是生活随笔為你收集整理的抖音APP接口签名算法分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。