返回列表 发新帖

[求助问答] 请问有没有基于hook的网络数据包抓包和重写方案

[复制链接]

19

主题

408

回帖

1207

积分

高中生

Rank: 4

金币
430
好评
4
信誉
104

MT论坛新人

发表在  2025-9-14 01:40:15 来自手机  | 显示全部楼层 | 阅读模式  来自 山东
如题 不一定是要一键工具 现有可供参考的方案就行
最好是通过xposed实现 当然其他hook框架也可以
至少要支持HttpURLConnection 最好也支持okhttp
回复

使用道具 举报

69

主题

1914

回帖

8109

积分

硕士生

Rank: 6Rank: 6

金币
2061
好评
22
信誉
105
发表于 2025-9-14 03:03:38 来自手机  | 显示全部楼层  来自 四川
本帖最后由 hw1020 于 2025-9-14 03:10 编辑

这个比较容易实现,hook相关类的方法,反射拿到数据判断url,生成并修改目标对象的值然后反射设置到原始位置就可以了。(如果混淆了就比较麻烦了,不同okhttp可能会有兼容性问题,因为有些类在不同版本不一样),具体逻辑对会点开发的来说应该不难。
已有1人评分金币 理由
OctoberSama + 1

查看全部评分 总评分:金币 +1 

回复

使用道具 举报

69

主题

1914

回帖

8109

积分

硕士生

Rank: 6Rank: 6

金币
2061
好评
22
信誉
105
发表于 2025-9-14 03:42:47 来自手机  | 显示全部楼层  来自 四川
这是很久以前写的一个okhttp替换目标url请求返回
数据的一个方法,应该可以给你参考参考。
  1. public static void replaceOkhttpResult(String methodName, String packageName , final String aimUrl, final String result, final ClassLoader classLoader)
  2.     {
  3.         final Log log = Log.newInstance("okhttp:");
  4.         Object[] es={new XC_MethodHook(){
  5.                 protected void afterHookedMethod(XC_MethodHook.MethodHookParam methodHookParam) throws Throwable
  6.                 {
  7.                     Object res = methodHookParam.thisObject;
  8.                     Object req = res.getClass().getMethod("request").invoke(res);
  9.                     Object u1 = req.getClass().getMethod("url").invoke(req);
  10.                     String url = u1.toString();

  11.                     if(url.indexOf(aimUrl) != -1)
  12.                     {
  13.                         log.printLog("|url:replace|result:;" + url);
  14.                         Class cls = res.getClass();

  15.                         Field code = cls.getDeclaredField("code");
  16.                         code.setAccessible(true);
  17.                         code.set(res, 200);

  18.                         Field body = cls.getDeclaredField("body");
  19.                         body.setAccessible(true);

  20.                         Class clsBody = XposedHelpers.findClass("okhttp3.ResponseBody", classLoader);
  21.                         Class clsMediaType = XposedHelpers.findClass("okhttp3.MediaType", classLoader);

  22.                         Method met =  clsBody.getMethod("create", clsMediaType, String.class);

  23.                         Object b1 =  met.invoke(body, null, result);

  24.                         body.set(res, b1);

  25.                         methodHookParam.setResult(true);
  26.                     }
  27.                 }
  28.             }
  29.         };
  30.         XposedHelpers.findAndHookMethod("okhttp3.Response", classLoader, methodName, es);
  31.     }
复制代码
已有1人评分金币 理由
OctoberSama + 1 感谢

查看全部评分 总评分:金币 +1 

回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表