radare2 简介
radare2是一个用C语言编写的跨平台的二进制分析工具,支持ARM、MIPS、X86等平台,支持分析多种格式的二进制文件如ELF、Mach-O、Fatmach-O, PE、PE+、 MZ、 COFF等,同时也支持多种操作系统如Windows (since XP)、GNU/Linux、GNU/Darwin、GNU/Hurd、Apple’s 等等,总之就是巨屌。
核心功能:
- 16进制编辑器
- 调试器,可对源来自于磁盘、网络连接、内核驱动程序、正在运行的进程进行调试
- 汇编、反汇编
- 程序模拟
- 二进制修补
- 数据分析比较、搜索、替换和可视化
结构图
常用命令总结
本文总结的常用命令只是对我我在实际使用过程中常用操作的总结,仅供参考
官方手册见:https://book.rada.re/index.html
在radare2总获取帮助的命令是"?",在命令模式下输入一个命令并紧跟一个“?”就可以获取这个命令的帮助信息
基础命令
- 移动 :s
命令 | 简介 | 备注 |
---|---|---|
s 0x10 | 移动到当前文件 0x10出 | |
s +4 | 以当前位置为基地址向前移动4字节 | |
s - | 移动到上一次在的位置 | |
sf function | 移动到function函数处 | |
s? | 查看s命令帮助信息 |
-
sections 相关的
iS 打印二进制文件中所有的段 om 打印二进制文件中段的映射 -
打印: p
px 0x10 | 以16进制格式从当前位置打印0x10个字节,并以byte为单位显示 | |
pxw 0x10 | 以16进制格式从当前位置打印0x10个字节,并以word为单位显示 | |
pd | 把当前位置开始的数据看做指令编码反汇编并显示 | |
ps | 把当前位置开始的数据看做字符串并打印 | |
pd @ 0x12006c874 | 临时跳转到0x12006c874执行打印,并返回 | |
p? | 查看p命令帮助信息 |
-
搜索: /
/w test 在当前文件中搜索”test“字符串 /a move fp, sp 汇编move fp, sp,并在当前文件中搜索 /m 在当前文件中搜索magic,可以找出当前二进制文件中包含的其他文件 在搜索命中时自动打印例子:
[0x12006c874]> e cmd.hit = pd 1 [0x12006c874]> /a lui gp, 0x5f Searching 4 bytes in [0x120658830-0x120a83ce0] hits: 0 Searching 4 bytes in [0x1206254a8-0x120658830] hits: 0 Searching 4 bytes in [0x120000000-0x1206154a4] hits: 105 0x120060d28 hit3_0 5f001c3c;-- hit1_0:;-- hit3_0:0x120060d28 5f001c3c lui gp, 0x5f ; '_' 0x120060d80 hit3_1 5f001c3c;-- hit1_1:;-- hit3_1:0x120060d80 5f001c3c lui gp, 0x5f ; '_' 0x120060dc8 hit3_2 5f001c3c;-- hit1_2:;-- hit3_2:0x120060dc8 5f001c3c lui gp, 0x5f ; '_'
-
分析: a
radare2在打开一个二进制文件时处于效率考虑,不会默认对二进制文件进行分析,需要用户手动分析
aaa 对打开的二进制文件进行全面分析 af sym.main 对main函数进行分析 -
二进制信息:i
ie 显示目标文件entry的信息 ih 显示目标文件的Headers信息 iI 显示目标文件二进制相关信息 is 显示目标文件的所有符号 iS. 显示当前所在的Sention信息 it 计算目标文件的hashes iM 显示main函数的地址
可视化模式
radare2支持可视化模式,在可视化模式下很多操作和VIM相同。输入V进入可视化模式,输入q退出可视化模式
按键 | ||
---|---|---|
p | 切换显示模式 | |
Tab | 在当前模式下,切换显示的信息 | |
j | 向下滚屏 | |
k | 向上滚屏 | |
: | 在可视化模式下使用命令(与VIM类似) | |
bF | 显示函数列表 | |
b1 | 进入bit编辑模式 | |
1-9 | 跳转到调用的函数 | |
空格 | 打印函数的调用图(需要先执行aaa) |
可视化编辑
按c进入cursor mode ,选中要修改的数据,按i进入编辑模式进行修改