r2frida:基于Frida的远程进程安全检测和通信工具

关于r2frida

r2frida是一款能够将Radare2和Frida的功能合二为一的强大工具,该工具本质上是一个Radare2的自包含插件,可以帮助广大研究人员利用Frida的功能实现对目标进程的远程安全检测和通信管理。

Radare2项目提供了针对逆向工程分析的完整工具链,功能也比较稳定,而且还支持利用其他编程语言和工具来扩展其功能。而Frida则是一个动态指令工具包,可以通过注入JavaScript代码来对正在运行的目标进程执行检测和操作,而且还可以与脚本进行通信。

功能介绍

1、运行未修改的Frida脚本(使用:.命令);

2、在任意进程中执行C、JavaScript或TypeScript代码段;

3、支持在本地或远程系统连接、生成或启动进程;

4、枚举内存区域富豪、导出、协议、类和方法;

5、在代理内部或主机的内存中搜索值;

6、使用短命令替换方法实现或创建钩子;

7、在目标进程中加载库或框架;

8、支持Dalvik、Java、ObjC、Swift和C接口;

9、操作文件描述符和环境变量;

10、向进程和断点发送信号;

11、读/写进程内存;

12、调用函数、系统调用和原始代码段;

13、通过USB或TCP/IP连接Frida服务器;

14、枚举应用程序和进程;

15、跟踪寄存器、参数和函数;

16、已在Linux、Windows、macOS、iOS和Android的x64、arm32和arm64上测试;

17、不需要在主机中安装Frida;

18、支持使用代理运行的插件扩展r2frida命令;

19、...

工具安装

广大研究人员可以直接通过r2pm安装r2frida:

复制代码
$ r2pm -ci r2frida

除此之外,我们也可以访问该项目的【Releases页面】下载最新版本的预编译r2frida。

工具编译

依赖

radare2

pkg-config(Windows不需要)

curl or wget

make, gcc

npm, nodejs(即将去除)

在GNU/Debian中,我们可以使用下列命令安装工具所需依赖组件:

复制代码
$ sudo apt install -y make gcc libzip-dev nodejs npm curl pkg-config git

命令

复制代码
$ git clone https://github.com/nowsecure/r2frida.git

$ cd r2frida

$ make

$ make user-install

工具使用

为了方便测试,这里使用"r2 frida://0"在Frida中连接到pid0,并且在本地运行。

现在,我们可以运行":?"命令来获取可用的命令列表:

复制代码
$ r2 'frida://?'

r2 frida://[action]/[link]/[device]/[target]

* action = list | apps | attach | spawn | launch

* link   = local | usb | remote host:port

* device = '' | host:port | device-id

* target = pid | appname | process-name | program-in-path | abspath

Local:

* frida://?                        # 显示工具帮助信息和退出

* frida://                         # 枚举本地进程

* frida://0                        # 连接至frida-helper

* frida:///usr/local/bin/rax2        # 生成进程的绝对路径

* frida://rax2                     # 生成进程的相对路径local/bin需在PATH中设置

* frida://spawn/$(program)         #在当前系统生成一个新的进程

* frida://attach/(target)            # 在当前主机连接至目标PID

USB:

* frida://list/usb//                # 枚举第一个USB设备的进程

* frida://apps/usb//               # 枚举第一个USB设备的应用程序

* frida://attach/usb//12345        # 连接至第一个USB设备的给定pid

* frida://spawn/usb//appname       # 在第一个USB设备中生成一个App

* frida://launch/usb//appname      # 在第一个USB设备中生成+恢复一个App

Remote:

* frida://attach/remote/10.0.0.3:9999/558 # 连接远程frida-server的pid 558

  R2FRIDA_SAFE_IO=0|1              # 解决Android/thumb上的Frida问题

  R2FRIDA_DEBUG=0|1               # 用于调试参数解析行为

  R2FRIDA_COMPILER_DISABLE=0|1  # 禁用新的Frida TypeScript编译器(`:. foo.ts`)

  R2FRIDA_AGENT_SCRIPT=[file]      # r2frida代理文件路径

使用样例

复制代码
$ r2 frida://0     # 与frida -p 0相同,连接至一个本地会话

我们可以通过进程名称或pid连接、生成或启动任意进程,下列命令将连接到第一个名为rax2的进程:

复制代码
$ r2 frida://rax2   # 连接至第一个名为rax2的进程

$ r2 frida://1234  # 连接至指定pid

使用源码的绝对路径将生成一个进程:

复制代码
$ r2 frida:///bin/ls

[0x00000000]> :dc        # 目标应用程序继续执行

添加其他参数运行:

复制代码
$ r2 frida://"/bin/ls -al"

下列命令可以使用USB调试iOS/Android应用程序:

复制代码
$ r2 frida://spawn/usb/         # 枚举设备

$ r2 frida://spawn/usb//        # 枚举iOS设备中的应用程序

$ r2 frida://spawn/usb//Weather # 运行Weather天气App

命令解析

复制代码
:i         # 获取目标详情

.:i*        # 将目标进程详情导入至local r2

:?         # 显示所有可用命令

:dm       # 枚举映射,使用':dm|head'搜索程序基地址

:iE        # 枚举当前二进制的导出

:dt fread   # 跟踪'fread'函数

:dt-*      # 删除所有跟踪

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

r2frida :【GitHub传送门

参考资料

https://www.radare.org/

Frida • A world-class dynamic instrumentation toolkit | Observe and reprogram running programs on Windows, macOS, GNU/Linux, iOS, watchOS, tvOS, Android, FreeBSD, and QNX

相关推荐
zzq77973 小时前
加固包闪退四象限定位:targetSdk 与保护策略实战解析
android·安全·安卓·安全架构
Promise微笑4 小时前
智能激光清障仪选型指南:高效运维与安全保障的关键考量
运维·安全
●VON5 小时前
鸿蒙 PC Markdown 编辑器存储安全:AtomicFile 原子提交与故障注入
安全·华为·编辑器·harmonyos·鸿蒙
网络研究院6 小时前
2026年上半年十大网络攻击和数据泄露事件
网络·安全·漏洞·风险·数据·泄露·事件
BEOL贝尔科技7 小时前
还在担心样本的安全吗?如何制定有效的温湿度异常应急预案?
人工智能·安全
未来之窗软件服务9 小时前
基于设备ID固化的SaaS客户端访问安全防护的必要性探析—东方仙盟
安全·仙盟创梦ide·东方仙盟·计算机考试
科技发布9 小时前
金理奖背书,传播易打造安全、透明、低成本广告投放渠道
安全
MartinYeung510 小时前
[论文学习]LLM 中的个性化安全:一个基准测试与基于规划的智能体方法
人工智能·学习·安全
王维同学10 小时前
IFEO Debugger、VerifierDlls 与 SilentProcessExit 配置
c++·windows·安全·注册表
析数塔12 小时前
SleeperGem 技术拆解:恶意 gem 是怎么躲过 CI/CD 扫描的
安全·ci/cd·github