概述
之前了解到r2frida这一工具,由于环境问题,并未安装成功。
在Kali Linux
和Windows
上安装r2frida
成功,记录一下。
Linux安装
环境
系统:Kali Linux 2021.2
软件:Node.js 12.22.5
、Frida 15.1.3
安装目标:Radare2 5.4.2
、r2frida 5.4.4
准备
radare2
1 | git clone https://github.com/radareorg/radare2 |
r2frida
可直接到Release页下载,以下是自行编译流程
安装依赖
1 | sudo apt install -y make gcc libzip-dev nodejs npm curl pkg-config git |
更换npm源(可选)
1 | npm config set registry http://registry.npm.taobao.org |
克隆仓库
1 | git clone https://github.com/nowsecure/r2frida |
修改
编辑Makefile
,修改frida_version
为frida安装版本
编译
1 | sudo make |
安装成功将提示:
1 | mkdir -p "//usr/local/lib/radare2/5.4.3" |
运行r2 frida://?
显示帮助,测试插件是否安装成功。
Windows安装
环境
系统:Windows 10 20H2 x64
软件:Visual Studio 2019
、Node.js 14.17.4
、Cygwin 3.2.0
(记得选择wget
)、Frida 15.1.2
(提前安装好以上环境,VS版本至少为2015)
安装目标:Radare2 5.4.2
、r2frida 5.4.4
准备
radare2
前往Releases · radareorg/radare2下载radare2-5.4.2-w64.zip
,解压到任意目录。
将..\radare2\bin
目录添加到PATH
环境变量后,执行r2 -v
查看版本号
r2frida
可直接到Release页下载,以下是自行编译流程
更换npm源(可选)
1 | npm config set registry http://registry.npm.taobao.org |
克隆仓库
1 | git clone https://github.com/nowsecure/r2frida |
修改
编辑build.bat
,修改frida_version
为frida安装版本,修改R2_BASE
为radare2
安装目录(不需要bin
)
将..\radare2\include\libr\r_cons.h
以UTF-8 with BOM
编码重新保存(防止编译出错)
编译
在cmd
中打开该目录,使用vcvarsall.bat
初始化环境,然后执行安装脚本
1 | "[Visual Studio安装位置]\VC\Auxiliary\Build\vcvarsall.bat" x64 |
安装成功将提示:
1 | Installing... |
运行r2 frida://?
显示帮助,测试插件是否安装成功。
结果如下:
1 | r2 frida://[action]/[link]/[device]/[target] |
使用
(连接帮助见上文)
获取usb device id(可选)
执行frida-ls-devices
,获取usb device id
然后启动app:
1 | r2 frida://launch/usb/[设备id]/[包名] |
设备id为空时,连接第一个usb设备
查询帮助
r2frida commands are prefixed with
=!
or:
.
附加上app后,如果要使用r2frida
的命令,需要在前面增加=!
或:
如:=!?
、:?
(获取帮助)
在命令后加问号,可查询命令帮助,如:/?
、ps?
过滤输出
使用~
过滤输出结果,类似于grep
例如::il~libart.so
(仅输出libart.so
地址)
查看信息
:i?
: 查看帮助
:i
: 查询信息:ic
: 列出所有类:icl
: 列出已加载的类:icm
: 列出类方法:il
: 列出模块:iE 模块名
: 列出模块导出符号
搜索字符串
:/?
:查看帮助
:/ 关键字
: 在内存中搜索关键字:/x 16进制
: 在内存中搜索十六进制数据
打印内存、反汇编
p?
:查看帮助 (这是r2的命令,不需要冒号)
s 地址
: 设置当前地址
x
: hexdump
当前地址的内存x @ 地址
: hexdump
指定地址的内存(其他命令同理)ps
: 打印字符串pd
: 反汇编
动态调试
:d?
: 查看帮助
:dm
: 列出内存区域(类似于maps
文件):dt
: 跟踪地址调用:dtf
: 跟踪地址调用,并格式化输出
1 | Usage: dtf [format] || dtf [addr] [fmt] |
加载Frida脚本
:.?
: 查看帮助
:. 脚本路径
: 加载js脚本
其他命令
cl
清屏
参考
r2frida使用
Android动态调试-R2frida和lldb
RADARE2+FRIDA=R2FRIDA Best Dynamic Debugging Tool
vs编译 error C2001: 常量中有换行符