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

【网络安全】用 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.lryc.cn/news/509586.html

相关文章:

  • 《信管通低代码信息管理系统开发平台》Windows环境安装说明
  • 使用强化学习与遗传算法优化3D低空物流路径_版本2
  • 【MinIO系列】MinIO Client (mc) 完全指南
  • 【微信小程序】2|轮播图 | 我的咖啡店-综合实训
  • React与Vue的区别(相同点和不同点)
  • Python语言的文件操作
  • 前端Pako.js 压缩解压库 与 Java 的 zlib 压缩与解压 的互通实现
  • unity 打包出来的所有执行文件内容打包成一个exe程序
  • 华为管理变革之道:组织文化与活力
  • 仿闲鱼的二手交易小程序软件开发闲置物品回收平台系统源码
  • PostgreSQL CRUD 操作指南
  • 4X4规模S盒分量布尔函数计算工具(附各大常见分组加密算法S盒查找表和其对应分量布尔函数截图)
  • 模拟——郑益慧_笔记1_绪论
  • 金融租赁系统的发展与全球化战略实施探讨
  • vue3入门教程:计算属性
  • Docker怎么关闭容器开机自启,批量好几个容器一起操作?
  • shell脚本(全)
  • 华为手机建议使用adb卸载的app
  • 论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
  • Java基础(Json和Java对象)
  • Linux 中检查 Apache Web Server (httpd) 正常运行时间的 4 种方法
  • Linux驱动开发--字符设备驱动开发
  • MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
  • 一文彻底拿捏DevEco Studio的使用小技巧
  • R9000P键盘失灵解决办法
  • 【Linux之Shell脚本实战】编写简单计算器shell脚本
  • 【0x001D】HCI_Read_Remote_Version_Information命令详解
  • 秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
  • python中使用selenium执行组合快捷键ctrl+v不生效问题
  • 大语言模型中的Agent;常见的Agent开发工具或框架