OkHttpLogger-Frida
Frida 实现拦截okhttp的脚本,只针对Android端使用okhttp框架发送http请求的拦截,用途不大,仅学习交流使用!
github 链接: https://github.com/siyujie/OkHttpLogger-Frida
使用说明
① 首先将 okhttpfind.dex 拷贝到 /data/local/tmp/ 目录下。 然后给目标App授予存储权限。
执行命令启动frida -U -l okhttp_poker.js -f com.example.demo --no-pause 可追加 -o [output filepath] 保存到文件
② 调用函数开始执行
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/10801920 Version/6.59.0 Build/6590119 Device/(google;AOSP on msm8996) discover/6.59.0
|
| Body:
| hex[…]//省略了,太长了
|
|–> 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
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────