OkHttpLogger-Frida抓包


自己操縱的注意點:

  1.不能有xposed環境

  2.okhttpfind.dex要換成重新打包的,去倉庫大issue能找到

Frida 實現攔截okhttp的腳本,只針對Android端使用okhttp框架發送http請求的攔截,用途不大,僅學習交流使用!

github : https://github.com/siyujie/OkHttpLogger-Frida

本菜雞學習Frida的練手項目,歡迎大家star,也求大佬們指點!

使用說明

首先將 okhttpfind.dex 拷貝到 /mnt/sdcard/ 目錄下,然后給目標App授予存儲權限。

例:frida -U com.example.demo -l okhttp_poker.js

接下來使用okhttp的所有請求將被攔截並打印出來。

擴展函數:

  • history() 會打印出所有的被抓到的請求信息
  • resend(index) 重新發送請求 例子: resend(0) 重新發送第一個請求

如果項目被混淆,那么可以使用okhttp_find.js打印出okhttp被混淆后的關鍵函數名稱,然后替換已聲明的內容即可。

例:frida -U com.example.demo -l okhttp_find.js

備注 :

okhtpfind.dex 內包含了 更改了包名的okio以及Gson,以及Java寫的尋找okhttp特征的代碼。

原理:

由於所有使用的okhttp框架的App發出的請求都是通過RealCall.java發出的,那么我們可以hook此類拿到requestresponse,
也可以緩存下來每一個請求的call對象,進行再次請求,所以選擇了此處進行hook。

抓取打印的樣例

一次性請求太多會出現打印錯亂現象,由於自己太菜,暫時沒有解決這個問題,希望求得大佬指點,萬分感謝!!!

┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
| URL: https://lng.***.com/api/collect
|
| Method: POST
|
| Headers:
|   ┌─Content-Type: application/octet-stream; charset=utf-8
|   ┌─Content-Length: 3971
|   └─User-Agent: Dalvik/2.1.0 (Linux; U; Android 8.1.0; AOSP on msm8996 Build/OPM1.171019.011) Resolution/1080*1920 Version/6.59.0 Build/6590119 Device/(google;AOSP on msm8996) discover/6.59.0
|
| Body:
|   Base64[........]//省略了,太長了
|
|--> END  (binary body omitted -> isPlaintext)
|
| URL: https://lng.***.com/api/collect
|
| Status Code: 200 / 
|
| Headers:
|   ┌─date: Sat, 29 Aug 2020 10:09:28 GMT
|   ┌─content-type: text/json; charset=utf-8
|   ┌─content-length: 41
|   ┌─access-control-allow-origin: *
|   ┌─access-control-allow-credentials: true
|   ┌─access-control-allow-methods: GET,POST,OPTIONS,HEAD
|   └─access-control-allow-headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Client-Build,X-Client-Platform,X-Client-Version,X-Mx-ReqToken,X-Requested-With,X-Sign
| 
| Body:
|   {"code":0,"msg":"Success","success":true}
| 
|<-- END HTTP
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
例子2
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
| URL: http://****/searchByKeywork
|
| Method: POST
|                                                                                                                    
| Headers:
|   ┌─Content-Type: application/x-www-form-urlencoded
|   └─Content-Length: 20
|
| Body:
|   userId=*****&keyword=run
|
|--> END 
|
| URL: http://****/searchByKeywork
|
| Status Code: 200 / 
|
| Headers:
|   ┌─Content-Type: application/json;charset=UTF-8
|   ┌─Transfer-Encoding: chunked
|   └─Date: Sat, 29 Aug 2020 10:18:50 GMT
| 
| Body:
|   {"code":1000,"message":"成功","result":[{"id":"jqjcRQFO2","name":"RUN","remark":"","shareKey":"dRbkPjn
|   J2sjVJTP0G","cover":null,"list":null,"index":0,"note":"更新至20200123期"}]}
| 
|<-- END HTTP
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

 

轉自:https://blog.csdn.net/siyujiework/article/details/108297912


免責聲明!

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



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