Radare2使用全解
字数 734 2025-08-25 22:58:56
Radare2 使用全解
1. 简介
Radare2 是一款功能强大的逆向工程框架,支持多种平台和文件格式。它由多个组件组成,每个组件负责不同的功能:
- rax2:数值转换
- rasm2:反汇编和汇编
- rabin2:查看文件格式
- radiff2:文件差异比较
- ragg2/ragg2-cc:生成shellcode
- rahash2:哈希算法和加密算法
- radare2:整合了上述工具的主程序
2. 安装
从官方GitHub仓库获取源代码并安装:
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
3. 组件详解
3.1 rax2 (数值转换)
rax2 -s 414141 # 返回 "AAAA"
3.2 rabin2 (文件格式分析)
常用命令:
rabin2 -I hello_pwn # 显示文件信息
rabin2 -l hello_pwn # 显示依赖库
rabin2 -zz hello_pwn # 显示字符串信息
修改文件选项:
rabin2 -O? # 查看可修改选项
rabin2 -O p/.text/r a.out # 修改.text段权限为只读
3.3 rasm2 (汇编/反汇编)
rasm2 -L | head # 查看支持的架构
rasm2 -a arm "nop;nop;nop;" # ARM汇编
rasm2 -a arm -d 0000a0e10000a0e10000a0e1 # ARM反汇编
3.4 ragg2/ragg2-cc (shellcode生成)
示例C代码:
int main() {
write(1,"hi\n", 3);
exit(0);
}
编译为shellcode:
ragg2-cc -a x86 -b 32 -d -o test test.c # 生成ELF文件
ragg2-cc -a x86 -b 32 -d -x test.c # 生成16进制shellcode
使用xor编码器:
ragg2 -B shellcode_hex # 使用xor编码
3.5 rahash2 (哈希计算)
rahash2 -L # 查看支持的算法
rahash2 -a md5 -s admin # 计算"admin"的MD5
4. radare2 主程序
4.1 基本使用
r2 target_bin # 分析文件
r2 -d target_bin # 调试模式
命令格式:
[.][times][cmd][~grep][@[@iter]addr!size][|>pipe]
4.2 分析命令
aaa # 完整分析
af @ main # 分析特定函数
pdf @ main # 打印函数汇编代码
4.3 图形模式
VV # 进入图形模式
# 图形模式下操作:
# hjkl - 移动
# p/P - 切换图形模式
# : - 输入命令
# ! - 执行命令
# 空格 - 切换图形/文本模式
4.4 补丁功能
r2 -w target_bin # 以可写模式打开
wa "nop;nop;nop;" # 写入汇编指令
wx 90909090 # 写入16进制数据
Vp # 可视化汇编/补丁
A # 在可视化模式下编辑
4.5 搜索功能
/ # 搜索字符串
/r # 搜索ROP gadgets
aae # 动态检测交叉引用
4.6 反编译功能
pdc # 查看伪代码
4.7 ESIL 模拟执行
e asm.esil = true # 显示ESIL代码
ae? # ESIL相关命令
5. 高级功能
5.1 脚本和自动化
Radare2支持多种脚本语言接口,包括Python、JavaScript等。
5.2 插件系统
Radare2有丰富的插件系统,可以扩展功能。
6. 总结
Radare2是一个功能全面的逆向工程框架,特别适合在以下场景使用:
- 跨平台逆向分析
- 文件格式修改和补丁
- 无F5反编译支持的平台
- 需要模拟执行的场景
通过熟练掌握Radare2的各种组件和功能,可以高效地进行二进制分析和修改工作。