Radare2 是一款开源的二进制平台,功能强大。日常中的许多工作不知不觉已经依赖 Radare2 来进行,下面记录一些平时常用的功能和命令:

汇编 & 反汇编

该部分借助 rasm2 组件,它支持多种架构,调用 rasm2 -L 命令可以查看详细的列表,使用 -a 参数可以指定指令集,-b 可以指定寄存器位宽,-e 参数可以指定大端格式,默认小端。

汇编

例如要生成 x86 架构 pop esp 指令的机器码:

1
2
rasm2 -a x86 "pop esp"
5c

可以指定 -C 参数生成 C 格式的结果:

1
2
rasm2 -a x86 -C "pop esp"
"\x5c"

反汇编

反汇编需要额外指定参数 -D,比较遗憾的是似乎只能接受 16 进制字节序列,如果是 C 格式的字符串还得手动处理一下,以下拿 x86 的机器码 ff148578563412 举例:

1
2
rasm2 -a x86 -D "ff148578563412"
0x00000000  7  ff148578563412  call dword [eax*4 + 0x12345678]