radare2使用

radare2 nb!!!

介绍

radare2是类unix逆向框架和命令行工具箱

官方book

  • rax2 数值转换
  • rasm2 汇编和反汇编
  • rabin2 查看文件格式
  • radiff2 对文件进行diff
  • ragg2/ragg2cc 方便生成shellcode
  • rahash2 各种密码hash算法
  • radare2 整合上面工具

此外还有radare2其它的套件

使用方法

rax2

1
rax2 -h

里面说的很明白了

rasm2

1
2
3
4
5
6
7
8
9
10
rasm2 -L | grep head # 列出前几项支持的架构
rasm2 -a arm "nop;nop;nop" # -a用于指出架构类型
# 0000a0e10000a0e10000a0e1
rasm2 -a arm -d "0000a0e10000a0e10000a0e1" # -d用于指出反汇编操作
# mov r0, r0
# mov r0, r0
# mov r0, r0
rasm2 -a arm -b 64 "nop;nop;nop" # -b用于指出位数
# 1f2003d51f2003d51f2003d5
rasm2 -a arm -b 64 -d "1f2003d51f2003d51f2003d5" -r # -r表示在radare2中实现对应功能的命令

rabin2

1
2
3
4
5
6
rabin2 -I a.out # 显示文件信息
rabin2 -zz a.out # 显示文件中的字符串,包含utf-8等宽字符串
rabin2 -O? # 显示-O选项的帮助,-O用于更改文件属性
rabin2 -S a.out | grep text # -S用于显示文件属性
rabin2 -O p/.text/r a.out # 修改text段为只读
rabin2 -S a.out | grep text

radiff2

1
radiff2 -h

ragg2/ragg2cc

1
2
3
4
int main(){
write(1,"hi\n",3);
exit(0);
}
1
ragg2 -ax86 -b32 1.c

还可以编译.r文件(ragg2语言)

rahash2

1
2
rahash2 -h 
rahash2 -a md5 -s admin

radare2

1
2
r2 bin # 进入程序,-d进入debug模式
radare2 bin

指令格式

1
[.][times][cmd][~grep][@[@iter]addr!size][|>pipe] ;

显示某一个指令的帮助

1
命令?

从当前位置打印十六进制

1
px
1
px @ main # 表示从main开始执行px,main也可以是地址

a进行分析,aaa进行完整分析,aaaa添加实验性特性
pdf打印函数代码

1
pdf @ main # 打印main函数的代码,main也可以是某个地址

radare2没识别的函数可以用af来识别

1
af @ addr 

s用于跳转到指定位置

pd用于打印汇编信息

pdc可以用于查看反编译代码

VV进入图形化模式

?用于显示帮助信息

可以发现键位是类似于vim的

p/P切换图形模式的显示模式

:输入命令,hjkl移动图形

!在调试时很有用,显示了各种信息

空格切换图形/文本模式

文本模式下可以用p来切换视图

r2patch程序

1
r2 -w bin # 以可写模式载入bin文件,或者r2内使用e io.cache=true

w系列用于patch文件

  • wa可以用于使用汇编指令patch文件,wa?查看帮助
  • wx用于十六进制patch

可视化patch
Vp,然后输入A就可以patch了

输入/ 用于搜索

ax用于管理交叉引用,/r 用于搜索

文档说$可以反编译,我没有= =

另外可以使用esil语言模拟执行

参考资料

[1] Radare2使用全解