当前位置: 首页 > news >正文

Frida 脚本抓取 HttpURLConnection 请求和响应

引入 Java 类:

引入 okhttp3.OkHttpClient、okhttp3.OkHttpClient$Builder、okhttp3.Interceptor、okhttp3.ResponseBody 等类。

创建自定义拦截器:

  1. 通过 Java.registerClass 创建自定义拦截器 MyInterceptor。
  2. 拦截器中重写 intercept 方法,处理并打印请求和响应信息。

重载 OkHttpClient.Builder 的 build 方法:

  1. 通过 overload 确保正确的方法重载。
  2. 在 build 方法中添加自定义拦截器。
  3. 确保在构建 OkHttpClient 之前添加拦截器。

异常处理:

捕获并打印所有异常,确保脚本执行的每一步都能输出详细的错误信息以便调试。

Java.perform(function () {// 抓取 HttpURLConnection 请求和响应var HttpURLConnection = Java.use('java.net.HttpURLConnection');HttpURLConnection.getInputStream.implementation = function () {var url = this.getURL().toString();var method = this.getRequestMethod();console.log('[*] HTTP Request: ' + method + ' ' + url);// 打印请求头var headers = this.getRequestProperties();headers.keySet().toArray().forEach(function (key) {var values = headers.get(key).toArray().join(', ');console.log('[*] Header: ' + key + ': ' + values);});// 打印请求体if (this.getDoOutput()) {var outputStream = this.getOutputStream();var writer = new Java.use('java.io.OutputStreamWriter')(outputStream);var body = this.getLocalData().toString();console.log('[*] Body: ' + body);}var inputStream = this.getInputStream();// 读取响应var reader = new Java.use('java.io.InputStreamReader')(inputStream);var bufferedReader = new Java.use('java.io.BufferedReader')(reader);var response = '';var line;while ((line = bufferedReader.readLine()) !== null) {response += line + '\n';}console.log('[*] HTTP Response: ' + response);return inputStream;};// 抓取 OkHttp 请求和响应try {var OkHttpClient = Java.use('okhttp3.OkHttpClient');var OkHttpClientBuilder = Java.use('okhttp3.OkHttpClient$Builder');var Interceptor = Java.use('okhttp3.Interceptor');var Response = Java.use('okhttp3.Response');var ResponseBody = Java.use('okhttp3.ResponseBody');// 创建自定义的 Interceptor 实现var MyInterceptor = Java.registerClass({name: 'com.custom.MyInterceptor',implements: [Interceptor],methods: {intercept: function (chain) {try {var request = chain.request();var url = request.url().toString();var method = request.method();console.log('[*] OkHttp Request: ' + method + ' ' + url);var headers = request.headers();for (var i = 0; i < headers.size(); i++) {console.log('[*] Header: ' + headers.name(i) + ': ' + headers.value(i));}var body = request.body();if (body) {var buffer = Java.use('okio.Buffer').$new();body.writeTo(buffer);var requestBody = buffer.readUtf8();console.log('[*] Body: ' + requestBody);}var response = chain.proceed(request);// 打印响应var responseBody = response.body().string();console.log('[*] OkHttp Response: ' + responseBody);// 需要重新创建响应,因为 response.body().string() 会消耗掉响应体var newResponseBody = ResponseBody.create(response.body().contentType(), responseBody);var newResponse = response.newBuilder().body(newResponseBody).build();return newResponse;} catch (e) {console.log('Interceptor Error: ' + e);throw e;}}}});// 重载 OkHttpClient.Builder 的 build 方法OkHttpClientBuilder.build.overload().implementation = function () {console.log('[*] Adding interceptor to OkHttpClient');this.addInterceptor(MyInterceptor.$new());return this.build();};console.log('Script successfully loaded');} catch (e) {console.log('Error: ' + e);}
});

frida -U -l script.js -n com.simple.android 抓包

相关文章:

Frida 脚本抓取 HttpURLConnection 请求和响应

引入 Java 类&#xff1a; 引入 okhttp3.OkHttpClient、okhttp3.OkHttpClient$Builder、okhttp3.Interceptor、okhttp3.ResponseBody 等类。 创建自定义拦截器&#xff1a; 通过 Java.registerClass 创建自定义拦截器 MyInterceptor。拦截器中重写 intercept 方法&#xff0…...

Java实现建造者模式和源码中的应用

Java实现建造者模式&#xff08;Builder Pattern&#xff09; 文章目录 Java实现建造者模式&#xff08;Builder Pattern&#xff09;案例&#xff1a;汉堡制作建造者模式的核心角色代码实现&#xff1a;汉堡制作 &#x1f354;内部类实现&#xff1a;Step 1&#xff1a;产品类…...

Windows安装docker

Windows有两种虚拟号技术&#xff0c;WLS和Hyper-V&#xff0c;因为我的win10是家庭版&#xff0c;所以只能采用WLS来安装docker。 在Windows 10家庭版中&#xff0c;由于默认不包含Hyper-V功能&#xff0c;因此容器功能也不可用。即使启用了Hyper-V&#xff0c;由于Docker De…...

SprinBoot+Vue校园车辆管理系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…...

【C语言进阶】C语言动态内存管理:深入理解malloc、calloc与realloc

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言自定义类型 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀C语言动态内存管理 &#…...

Java+控制台 图书管理系统

Java控制台 图书管理系统 一、系统介绍二、功能展示1.用户登陆2.普通用户&#xff1a;图书查询、图书借阅、图书归还 、图书列表3.管理员:图书整理、图书添加、图书删除 四、其它1.其他系统实现 一、系统介绍 系统实现了普通用户&#xff1a;图书查询、图书借阅、图书归还 、图…...

gi清除无用缓存

使用 git pull --rebase 的确会对 Git 仓库的大小产生影响&#xff0c;主要是因为每次重新基于最新的代码进行 rebase&#xff0c;Git 会保存历史提交的变动。即使你的实际代码量不多&#xff0c;Git 依然需要存储所有这些历史变更记录&#xff0c;因此可能会导致仓库的大小逐渐…...

云PLM系统对企业影响有哪些?解析云PLM系统的作用

随着企业数字化转型的加速&#xff0c;云PLM产品生命周期管理系统逐渐成为企业提升竞争力、优化资源配置、加速产品上市的重要工具。云PLM系统通过云计算技术&#xff0c;不仅解决了传统PLM系统面临的高昂部署成本、复杂维护、数据共享效率低等问题&#xff0c;还为企业带来了更…...

四、查找算法

文章目录 一、查找算法介绍二、线性查找算法2.1 顺序查找2.2 二分查找&#xff08;折半查找&#xff09;2.3 插值查找2.4 斐波拉契&#xff08;黄金分割法&#xff09;查找算法 三、树表的查找3.1 二叉排序树3.1.1 引入3.1.2 基本介绍3.1.3 二叉树的遍历3.1.4 二叉树的删除 3.2…...

果蔬识别系统性能优化之路(三)

目录 前情提要遗留问题 解决方案优化查询速度优化ivf初始化的速度 下一步 前情提要 果蔬识别系统性能优化之路&#xff08;二&#xff09; 遗留问题 优化同步速度&#xff0c;目前大约30秒&#xff0c;不是一个生产速度 这次来解决遗留问题 通过console&#xff0c;发现两个…...

时序预测|基于小龙虾优化高斯过程GPR数据回归预测Matlab程序COA-GPR 多特征输入单输出 附赠基础GPR

时序预测|基于小龙虾优化高斯过程GPR数据回归预测Matlab程序COA-GPR 多特征输入单输出 附赠基础GPR 文章目录 一、基本原理二、实验结果三、核心代码四、代码获取五、总结 时序预测|基于小龙虾优化高斯过程GPR数据回归预测Matlab程序COA-GPR 多特征输入单输出 附赠基础GPR 一、…...

C#进阶-快速了解IOC控制反转及相关框架的使用

目录 一、了解IOC 1、概念 2、生命周期 二、IOC服务示例 1、定义服务接口 2、实现服务 三、扩展-CommunityToolkit.Mvvm工具包 Messenger信使 方式一&#xff08;收发消息&#xff09; 方式二&#xff08;收发消息&#xff09; 方式三&#xff08;请求消息&#xf…...

C++内存布局

文章目录 C内存布局1.文字介绍2.图片介绍3.代码介绍 C内存布局 1.文字介绍 1.内核态空间 2.用户态空间 (1)栈区&#xff1a;存储局部变量和函数调用的相关信息&#xff0c;栈的特点是自动分配和释放&#xff0c;由操作系统管理。栈由高地址向低地址生长&#xff0c;通常为0x…...

【Linux 19】线程概念

文章目录 &#x1f308; 一、线程的概念⭐ 1. 线程是什么⭐ 2. 线程的优点⭐ 3. 线程的缺点⭐ 4. 线程的异常⭐ 5. 线程的用途 &#x1f308; 二、进程和线程⭐ 1. 进程和线程的区别⭐ 2. 进程的多线程共享⭐ 3. 进程和线程的关系⭐ 3. 进程和线程的关系 &#x1f308; 一、线程…...

[区间dp]添加括号

题目描述 有一个 n n n 个元素的数组 a a a。不改变序列中每个元素在序列中的位置&#xff0c;把它们相加&#xff0c;并用括号记每次加法所得的和&#xff0c;称为中间和。现在要添上 n − 1 n - 1 n−1 对括号&#xff0c;加法运算依括号顺序进行&#xff0c;得到 n − …...

jenkins流水线+k8s部署springcloud微服务架构项目

文章目录 1.k8s安装2.jenkins安装3.k8s重要知识1.简介2.核心概念3.重要命令1.查看集群消息2.命名空间3.资源创建/更新4.资源查看5.描述某个资源的详细信息6.资源编辑7.资源删除8.资源重启9.查看资源日志10.资源标签 4.k8s控制台1.登录2.界面基本操作1.选择命名空间2.查看命名空…...

安卓开发板_联发科MTK开发评估套件串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发&#xff0c;USB 串口适配器&#xff08; USB 转串口 TTL 适配器的简称&#xff09;对于检查系统启动日志非常有用&#xff0c;特别是在没有图形桌面显示的情况下。 1.选购适配器 常用的许多 USB 转串口的适配器&#xf…...

vue+el-table 可输入表格使用上下键进行input框切换

使用上下键进行完工数量这一列的切换 <el-table :data"form.detailList" selection-change"handleChildSelection" ref"bChangeOrderChild" max-height"500"><!-- <el-table-column type"selection" width&quo…...

中国书法——孙溟㠭浅析碑帖《三希堂法帖》

孙溟㠭浅析碑帖《三希堂法帖》 全称是《三希堂石渠宝笈法帖》&#xff0c;是中国清代宫廷刻帖&#xff0c;一共三十二册。 清朝高宗弘历收藏了晋王羲之《快雪时晴帖》&#xff0c;王献之的《中秋帖》&#xff0c;王珣的《伯远帖》三种王氏原墨迹。故而把所藏法书之所…...

深入探讨生成对抗网络(GANs):颠覆传统的AI创作方式

在人工智能的快速发展中&#xff0c;生成对抗网络&#xff08;Generative Adversarial Networks, GANs&#xff09;无疑是一个引人注目的技术。自2014年由Ian Goodfellow等人首次提出以来&#xff0c;GANs已经在图像生成、文本生成、视频生成等多个领域展现出了惊人的能力。本文…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...