解決k手8.0抓包

最近某手更新了8.0版本,這讓我們的爬蟲小夥伴可難受了。
某手更新8.0之後,最直接的問題就是抓不到包。
我們需要逆向分析一下8.0的網絡協議,看看到底使用了什麼技術,才讓我們抓不到包呢。

分析藉助的技術&工具

1、jadx
2、frida

網絡請求框架分析請求協議

通過查看app源碼,可以清楚看到okhttp3的包名,使用okhttp3就很香。

okhttp3分析

1、打印網絡請求
通過他的sign或者sig3算法位置打印即可
frida 是真的香

 
 
var s = Java.use("j.a.*.*.s");
 
s.a.overload('okhttp3.Request', 'java.util.Map', 'java.util.Map').implementation = function (a1, a2, a3) {
 
console.log(a1)
 
return this.a(a1, a2, a3)
 
}

可以清楚的看到請求的url還有get的參數,不過發現沒有打印出來協議相關的信息。
file
2、打印網絡響應
打印一下第一步的調用棧

 
 
var exc = Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new());
 
console.log(exc)

file
這裏的就可以去打印響應數據了。
file
這就好了,app使用的協議是quic,這也就是爲什麼通過Charles抓不到包的原因了。
okhttp3本身是支持quic的,但是app這裏沒有用到。
從這篇文章就能發現蛛絲馬跡
https://cloud.tencent.com/developer/news/666059

 
 
客戶端、網絡庫統一設計
 
對 QUIC 協議的支持需要客戶端、服務端統一設計,kQUIC 也做了相應的工作。
 
 
 
客戶端網絡庫項目代號是庫 Aegon,目標是代替原 OKHTTP/AFNetworking 和進行 API 請求和短視頻下載,提供了 QUIC 協議的支持、完善的上報信息,並基於對數據指標的分析和對協議的深入理解,對網絡庫中持續進行了多項協議相關的優化,包括預建連、SSL Session 複用優化、客戶端 BBR、POST 請求 0RTT 優化等等。
 
 
 
一般 APP 使用的開源的網絡庫包括 OKHTTP 和 AFNetwork,都不支持跨平臺,OKHTTP 是 Android 端,AFNetwork 是 iOS 端。**網絡庫在設計之初就把跨平臺作爲一個重要的目標,爲**的雙端提供統一的網絡優化解決方案。

所以Aegon是客戶端代號,全部的包名是aegon.chrome,剩下的就好辦了。

解決問題

通過上面類似步驟的hook和打印調用棧,發現app本身有一個類似開關的地方。
"enable_quic": true
把這個開關利用hook改成"enable_quic": false,那就可以抓包了。
看看hook修改後的請求協議吧。
file
看看Charles是否能抓到包。
file

最後小結

frida Hook在app啓動的時候,不要attach,建議使用xposed進行Hook,主要app會在開機的自啓動,以上只用學習交流,請勿用於非法研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章