【网络安全】用 Frida 修改软件为你所用

用 Frida 修改软件为你所用

Frida是一个强大的设备操作工具,它允许我们分析、修改和与运行中的应用程序交互。Frida通过在目标进程中创建一个线程,并通过这个线程执行一些启动代码来实现交互功能。这种交互被称为“代理”,它允许我们添加JavaScript代码,实时控制应用程序的行为。

1. 重要功能介绍:Interceptor

Frida中最重要的功能之一是采集器——Interceptor。它允许我们观察、修改内部函数的输入和输出,以及跟踪它们的行为。例如,对于一个类似于此的进程:

你可以使用Frida采集器监控函数调用,更改函数参数值,并返回一个修改后的结果。下面是一个例子:

2. 例子:实时修改say_hello函数

在下面的示例中,应用程序会在终端打印一个数字:

原始say_hello函数:

// Frida JavaScript script to intercept `say_hello` 
Interceptor.attach(Module.getExportByName(null, "say_hello"), { onEnter: function (log, args, state) { }, onLeave: function (log, retval, state) { } 
});

输出结果

ubuntu@tryhackme:~$ ./main
Hello, 1!
Hello, 1!
Hello, 1!
Hello, 1!
Hello, 1!

我们想将这个数字改成1337。

添加调用事件处理器

首先,运行 frida-trace 来为每个调用的函数创建处理器:

frida-trace ./main -i '*'

完成后,你会看到一个 handlers 目录,包含每个函数调用对应的JavaScript文件。采用say_hello() 函数,对应的处理器是一个调用文件,它位于 handlers/libhello.so/say_hello.js

修改处理器代码

在每次调用前后操作数据:

Interceptor.attach(Module.findExportByName(null, "say_hello"), {onEnter: function (args) {var originalArgument = args[0].toInt32();console.log("Original argument: " + originalArgument);args[0] = ptr(1337);},onLeave: function (retval) {console.log("Returned value: " + retval.toInt32());}
});

这个脚本将参数值改为1337,并记录原参数和返回值。

重试结果

重新运行程序:

ubuntu@tryhackme:~$ frida-trace ./main -i 'say*'
Hello, 1337!
Original argument: 1
Returned value: 1337

3. 结论

Frida是一个极具力的分析和操作工具,选择它,你就为分析和应用优化带来了方便和新想法。不管是进行精磨分析,还是实现优化,Frida都是你不可或缺的助手。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493648.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MacOS安装MySQL

官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码(不少于8位),这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…

Tomcat部署war包项目解决404问题

问题出在了Tomcat的版本上了,应该先去看这个项目使用的springboot版本,然后去仓库里找到对应Tomcat版本。 Maven Repository: org.springframework.boot spring-boot-starter-tomcat 因此我们应该选择Tomcat9版本。 当我把Tomcat11换成Tomcat9时&…

3D工具显微镜的测量范围

一、测量尺寸范围 样品尺寸: 3D工具显微镜通常能够测量各种尺寸和形状的样品,从小至微米级别的微小结构到大至几厘米甚至更大的物体。具体的测量尺寸范围取决于显微镜的载物台大小、镜头焦距以及软件处理能力。测量精度: 3D工具显微镜的测量…

MySql:基本查询

✨✨作者主页:嶔某✨✨ ✨✨所属专栏:MySql✨✨ 本文的代码中, [ ] 里面的都可以省略 在 MySQL 中,CRUD 是数据库操作的核心,代表以下四种基本操作: C(Create):创建、插…

git remote -v(--verbose)显示你的 Git 仓库配置的远程仓库的详细信息

git remote -v 是一个 Git 命令,用于显示你的 Git 仓库配置的远程仓库的详细信息。 当你执行 git remote -v 命令时,你会看到类似以下的输出: origin https://github.com/your-username/your-repo.git (fetch) origin https://github.com…

python rabbitmq实现简单/持久/广播/组播/topic/rpc消息异步发送可配置Django

windows首先安装rabbitmq 点击参考安装 1、环境介绍 Python 3.10.16 其他通过pip安装的版本(Django、pika、celery这几个必须要有最好版本一致) amqp 5.3.1 asgiref 3.8.1 async-timeout 5.0.1 billiard 4.2.1 celery 5.4.0 …

使用CNN模型训练图片识别(键盘,椅子,眼镜,水杯,鼠标)

首先是环境: 我是在Anaconda3中的Jupyter Notebook (tensorflow)中进行训练,环境各位自行安装 数据集: 本次数据集五个类型(键盘,椅子,眼镜,水杯,鼠标)我收集了每个接近两…

【IoTDB 线上小课 10】为什么选择 IoTDB 管理时序数据?

【IoTDB 视频小课】年底更新!恭喜累计到第十期啦~ 关于 IoTDB,关于物联网,关于时序数据库,关于开源... 一个问题重点,3-5 分钟,我们讲给你听: 为什么选 IoTDB? 观看过之前视频的朋友…

每日十题八股-2024年12月21日

1.MyBatis运用了哪些常见的设计模式? 2.了解SpringCloud吗,说一下他和SpringBoot的区别 3.用过哪些微服务组件? 4.负载均衡有哪些算法? 5.如何实现一直均衡给一个用户? 6.介绍一下服务熔断 7.介绍一下服务降级 8.NOSQL…

LabVIEW深海气密采水器测控系统

LabVIEW的深海气密采水器测控系统通过高性价比的硬件选择与自主开发的软件,实现了高精度的温度、盐度和深度测量,并在实际海上试验中得到了有效验证。 项目背景 深海气密采水器是进行海底科学研究的关键工具,用LabVIEW开发了一套测控系统&am…

RK3588 , mpp硬编码yuv, 保存MP4视频文件.

RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ Ubuntu x64 架构, 交叉编译aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBRK3588 , mpp硬编码yuv, 保存MP4视频文件.

EMMC , UFS, SSD介绍

EMMC(Embedded Multi Media Card,嵌入式多媒体卡)、UFS(Universal Flash Storage,通用闪存存储)和SSD(Solid State Drive,固态硬盘)都是数据存储技术,是现代设…

arm Rk3588 更新固件

firefly的rk3588板子。 一、安装驱动、工具以及烧录工具 二、adb shell 在adb目录输入cmd 然后输入 adb shell 截图: 三、加载固件 四、 进loader 通过上图烧录工具的界面展示,其提示“发现一个ADB设备”。输入: reboot loader 进入lo…

Java性能测试Benchmark使用总结

如何测量Java代码的性能 在 Java 中&#xff0c;可以使用多种方法来测量一段代码的执行性能。使用 System.currentTimeMillis()是最常见的方法 long startTime System.currentTimeMillis();// 需要测量的代码块 for (int i 0; i < 1000000; i) {// 示例代码 }long endTi…

Win10将WindowsTerminal设置默认终端并添加到右键(无法使用微软商店)

由于公司内网限制&#xff0c;无法通过微软商店安装 Windows Terminal&#xff0c;本指南提供手动安装和配置新版 Windows Terminal 的步骤&#xff0c;并添加右键菜单快捷方式。 1. 下载新版终端安装包: 访问 Windows Terminal 的 GitHub 发布页面&#xff1a;https://githu…

Linux网络基础--传输层Tcp协议(上) (详细版)

目录 Tcp协议报头&#xff1a; 4位首部长度&#xff1a; 源端口号和目的端口号 32位序号和确认序号 标记位 超时重传机制&#xff1a; 两个问题 连接管理机制 三次握手&#xff0c;四次挥手 建立连接&#xff0c;为什么要有三次握手&#xff1f; 先科普一个概念&…

【NLP 18、新词发现和TF·IDF】

目录 一、新词发现 1.新词发现的衡量标准 ① 内部稳固 ② 外部多变 2.示例 ① 初始化类 NewWordDetect ② 加载语料信息&#xff0c;并进行统计 ③ 统计指定长度的词频及其左右邻居字符词频 ④ 计算熵 ⑤ 计算左右熵 ​编辑 ⑥ 统计词长总数 ⑦ 计算互信息 ⑧ 计算每个词…

clickhouse-数据库引擎

1、数据库引擎和表引擎 数据库引擎默认是Ordinary&#xff0c;在这种数据库下面的表可以是任意类型引擎。 生产环境中常用的表引擎是MergeTree系列&#xff0c;也是官方主推的引擎。 MergeTree是基础引擎&#xff0c;有主键索引、数据分区、数据副本、数据采样、删除和修改等功…

Pytorch | 从零构建Vgg对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集Vgg网络结构特点性能应用影响 Vgg结构代码详解结构代码代码详解特征提取层 _make_layers前向传播 forward 训练过程和测试结果代码汇总vgg.pytrain.pytest.py 前面文章我们构建了AlexNet对CIFAR10进行分类&#xff1a; Py…

大数据机器学习算法和计算机视觉应用07:机器学习

Machine Learning Goal of Machine LearningLinear ClassificationSolutionNumerical output example: linear regressionStochastic Gradient DescentMatrix Acceleration Goal of Machine Learning 机器学习的目标 假设现在有一组数据 x i , y i {x_i,y_i} xi​,yi​&…