App接口加密參數破解流程介紹


如今,隨着各大公司對數據安全愈發重視,App數據的爬取也變得越來越難。大多數主流App都對自己的數據接口進行了參數的加密,如淘系App的X-sign、抖音系App的X-grogon、拼多多App的anti-token等等,如果請求的時候不攜帶加密參數,就無法爬取數據。

這就需要我們對加密函數進行逆向破解,一般流程如下:

  1. 首先你需要下載App對應的APK文件,對App進行反編譯(可見我寫的App反編譯工具使用教程);
  2. 然后你需要找到生成加密參數的函數,這一步往往需要花費較多的時間,很多App都進行了混淆;
  3. 對加密函數進行逆向破解,實現自己的加密函數,供數據爬取的時候調用。

上面三步,就是一般情況下破解加密函數的流程。然而,往往你會卡在第三步上,你會發現在加密函數中,它又調用了某幾個不知名的函數,而你在反編譯后的Java代碼中還找不到這幾個函數的具體實現。這種情況十分多見,如淘寶App加密參數X-sign的生成,這幾個不知名的函數往往是隱藏在了so文件中,它直接調用了so文件中的具體實現函數。so文件的破解難度往往很大,加密函數很難找到,就算找到了,也很難分析逆向出來。

這一步也卡了我很久,最后通過參考網上大神們的文章,我知道了一種新的破解思路:

  1. 首先和一般破解流程一樣,你需要對App進行反編譯,然后找到生成加密參數的函數;
  2. 編寫Xposed模塊,Hook到該加密函數(可見我寫的Hook教程);
  3. Hook到后,把加密函數及實例化后的類對象保存到系統服務中;
  4. 在Xposed模塊中搭建一個HTTP服務器;
  5. 實現一個接口,調用該接口后,通過Java中的反射調用保存到系統服務中的加密函數,返回加密后的參數;
  6. 爬蟲遠程調用該Xposed模塊中的接口,實現實時獲取加密參數。

ps:這一種破解思路,難點在於第三步,如何保存加密函數及實例化后的類對象(因為你的Xposed模塊和目標App是兩個不用的App,無法實現相互通信),這里可看我的后續文章。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM