基于Frida实现OKHttp的抓包

前言

在进行逆向分析时候,抓包有很多种方式,今天带来了一种新方法对基于OKHttp实现的网络请求进行抓包,该方法有一定的局限性。

Frida

Frida是一款轻量级的Hook框架,Java与Native层只需几行代码即可进行Hook,本文就是基于该Hook框架实现。官方网站:https://frida.re/docs/home/

原理

熟悉Android开发的应该知道,okhttp中有一个重要的设计那就是拦截器。通过拦截器可以监测到所有关于连接的信息。本文就是在原有拦截器上添加自己的拦截器进行网络抓包

在这里插入图片描述

Frida 简单实现 Interceptor
var imple = {
   }
imple[intercept.getName()] = function (chain) {
   
            var request = chain[request_chain]();
            var res = chain[process_chain](request)
            console.log("请求:",request);
            return res;
}
//注册MyInterceptor
var http = Java.registerClass({
   
            name: "okhttp3.MyInterceptor",
            implements: [Java.use(Interceptor)],
            methods: imple
})
修改OkHttpClient成员
 //内存中寻找OKHttpClient对象
Java.choose(Client, {
   
            onMatch(i) {
   
                interceptors.forEach(e => {
   
 //反射修改interceptors,networkInterceptors
                    e.setAccessible(true);
                    var list = Java.cast(e.get(i), Java.use("java.util.List"))
                    var arr = ArrayList.$new()
                    for (let i = 0; i < list.size(); i++) {
   
                        const element = list.get(i);
                        if (element.toString().indexOf("okhttp3.MyInterceptor") == -1) {
   
                            arr.add(eleme
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值