ๅ้กน็ฎๅฐๅ: https://github.com/siyujie/OkHttpLogger-Frida
- Frida ๅฎ็ฐๆฆๆชokhttp็่ๆฌ
โ ้ฆๅ ๅฐ
okhttpfind.dex
ๆท่ดๅฐ/data/local/tmp/
็ฎๅฝไธ๏ผ็ถๅ็ป็ฎๆ Appๆไบๅญๅจๆ้ใ
ๆง่กๅฝไปคๅฏๅจfrida -U -l okhttp_poker.js -f com.example.demo --no-pause
โก ่ฐ็จๅฝๆฐๅผๅงๆง่ก
- find() ่ฆ็ญๅฎๅ จๅฏๅจๅนถๆง่ก่ฟ็ฝ็ป่ฏทๆฑๅๅ่ฟ่ก่ฐ็จ
- hold() ่ฆ็ญๅฎๅ จๅฏๅจๅ่ฟ่ก่ฐ็จ
- history() & resend() ๅชๆๅฏไปฅ้ๆฐๅ้็่ฏทๆฑ
`find()` ๆฃๆฅๆฏๅฆไฝฟ็จไบOkhttp & ๆฏๅฆๅฏ่ฝ่ขซๆททๆท & ๅฏปๆพokhttp3ๅ
ณ้ฎ็ฑปๅๅฝๆฐ
`switchLoader(\"okhttp3.OkHttpClient\")` ๅๆฐ๏ผ้ๆๅๆๅฐ็okhttpclient็ฑปๅ
`hold()` ๅผๅฏHOOKๆฆๆช
`history()` ๆๅฐๅฏ้ๆฐๅ้็่ฏทๆฑ
`resend(index)` ้ๆฐๅ้่ฏทๆฑ
็ฑไบๆๆไฝฟ็จ็okhttp
ๆกๆถ็Appๅๅบ็่ฏทๆฑ้ฝๆฏ้่ฟRealCall.java
ๅๅบ็๏ผ้ฃไนๆไปฌๅฏไปฅhookๆญค็ฑปๆฟๅฐrequest
ๅresponse
,
ไนๅฏไปฅ็ผๅญไธๆฅๆฏไธไธช่ฏทๆฑ็call
ๅฏน่ฑก๏ผ่ฟ่กๅๆฌก่ฏทๆฑ๏ผๆไปฅ้ๆฉไบๆญคๅค่ฟ่กhookใ
find
ๅๆฐๅขcheck
๏ผๆ นๆฎ็นๅพ็ฑปๅฏปๆพๆฏๅฆไฝฟ็จไบokhttp3
ๅบ๏ผๅฆๆๆฒกๆ็นๅพ็ฑป๏ผๅ่ฏดๆๆฒกๆไฝฟ็จokhttp
;
ๆพๅฐ็นๅพ็ฑป๏ผ่ฏดๆไฝฟ็จไบokhttp
็ๅบ๏ผๅนถๆๅฐๅบๆฏๅฆ่ขซๆททๆทใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| 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
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| 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
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ่ขซ ๆทท ๆท ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Start Find~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Find Result~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var Cls_Call = "ูู
ุถ๏บ.ุซูุบู";
var Cls_CallBack = "ูู
ุถ๏บ.๏บู๏บฉุฌ";
var Cls_OkHttpClient = "ูู
ุถ๏บ.๏ป๏บซุชู";
var Cls_Request = "ูู
ุถ๏บ.๏บตูู๏ป
";
var Cls_Response = "ูู
ุถ๏บ.ุตุฑูุฌ";
var Cls_ResponseBody = "ูู
ุถ๏บ.ุถุช๏ปญุฐ";
var Cls_okio_Buffer = "๏ปญ๏ป๏บซ๏ป.๏บต๏บฑ๏ปญุน";
var F_header_namesAndValues = "๏ปุจูู";
var F_req_body = "๏บต๏บฑ๏ปญุน";
var F_req_headers = "ุจ๏บุฐู";
var F_req_method = "๏บฏ๏บตุช๏ป";
var F_req_url = "๏ปุจูู";
var F_rsp$builder_body = "๏ปุฌ๏ปญู";
var F_rsp_body = "๏บน๏ป
๏ปุฒ";
var F_rsp_code = "๏ปุฌ๏ปญู";
var F_rsp_headers = "ุบ๏ปุฒุซ";
var F_rsp_message = "ูู
ุถ๏บ";
var F_rsp_request = "ุซูุบู";
var M_CallBack_onResponse = "onResponse";
var M_Call_enqueue = "๏ปุจูู";
var M_Call_execute = "wait";
var M_Call_request = "";
var M_Client_newCall = "๏ปุจูู";
var M_buffer_readByteArray = "๏บน๏ป
๏ปุฒ";
var M_contentType_charset = "๏ปุจูู";
var M_reqbody_contentLength = "contentLength";
var M_reqbody_contentType = "contentType";
var M_reqbody_writeTo = "writeTo";
var M_rsp$builder_build = "๏ปุจูู";
var M_rspBody_contentLength = "contentLength";
var M_rspBody_contentType = "contentType";
var M_rspBody_create = "create";
var M_rspBody_source = "source";
var M_rsp_newBuilder = "ุจ๏บุฐู";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Find Complete!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ๅ ไธบ
okhttp_poker.js
่ฆ็ไบokhttp_cat.js
็ๆๆๅ่ฝ๏ผๆไปฅๆพๅผไบokhttp_cat.js
- ไป ๅๅญฆไน ไบคๆต! ่ฏทๅฟๅ็จ!!
- ่ฅๅ ไฝฟ็จๆฌๆๅกไธ็ธๅ ณ่ฝฏไปถๅฎๆน้ ๆไธๅฟ ่ฆ็็บ ็บท๏ผๆฌไบบๆฆไธ่ด่ดฃ!
- ๆฌไบบ็บฏ็ฒนๆๆฏ็ฑๅฅฝ๏ผ่ฅไพต็ธๅ ณๅ ฌๅธ็ๆ็๏ผ่ฏทๅ็ฅๅ ้ค!