启动
在Ubuntu中输入r2
,输出如下:
zyjsuper@ubuntu:~$ r2
Usage: r2 [-ACdfLMnNqStuvwzX] [-P patch] [-p prj] [-a arch] [-b bits] [-i file]
[-s addr] [-B baddr] [-m maddr] [-c cmd] [-e k=v] file|pid|-|--|=
其中参数含义如下:
- d:以debuger模式启动
命令
测试程序如下
void main(){
write(1,"HACK\n",5);
}
a
aaa
指令的作用是分析全部二进制代码,radare2会自动为我们划分各个程序并进行命名:
测试输出如下:
[0x7fc64ba36090]> aaa
[x] Analyze all flags starting with sym. and entry0 (aa)
[x] Analyze function calls (aac)
[x] Analyze len bytes of instructions for references (aar)
[x] Check for vtables
[TOFIX: aaft can't run in debugger mode.ions (aaft)
[x] Type matching analysis for all functions (aaft)
[x] Propagate noreturn information
[x] Use -AA or aaaa to perform additional experimental analysis.
afl
指令的作用是列出所有的方程信息,包括内存地址,size,bbs,名称
测试输出如下:
[0x55a3f9b72135]> afl
0x55a3f9b72050 1 42 entry0
0x55a3f9b74fe0 1 4121 reloc.__libc_start_main
0x55a3f9b72080 4 41 -> 34 sym.deregister_tm_clones
0x55a3f9b720b0 4 57 -> 51 sym.register_tm_clones
0x55a3f9b720f0 5 57 -> 50 sym.__do_global_dtors_aux
0x55a3f9b72040 1 6 sym.imp.__cxa_finalize
0x55a3f9b72130 1 5 entry.init0
0x55a3f9b72000 3 23 map._home_zyjsuper_learn_radare2_test.r_x
0x55a3f9b721c0 1 1 sym.__libc_csu_fini
0x55a3f9b721c4 1 9 sym._fini
0x55a3f9b72160 4 93 sym.__libc_csu_init
0x55a3f9b72135 1 34 main
0x55a3f9b72030 1 6 sym.imp.write
0x55a3f9b71000 3 126 -> 181 loc.imp._ITM_deregisterTMCloneTable
p
指令的作用是打印出反汇编后的汇编语言代码,测试输出如下:
[0x55a3f9b72135]> pdf
; DATA XREF from entry0 @ 0x55a3f9b7206d
┌ 34: int main (int argc, char **argv, char **envp);
│ 0x55a3f9b72135 55 push rbp
│ 0x55a3f9b72136 4889e5 mov rbp, rsp
│ 0x55a3f9b72139 ba05000000 mov edx, 5
│ 0x55a3f9b7213e 488d35bf0e00. lea rsi, str.HACK_n ; 0x55a3f9b73004 ; "HACK\n"
│ 0x55a3f9b72145 bf01000000 mov edi, 1
│ 0x55a3f9b7214a b800000000 mov eax, 0
│ 0x55a3f9b7214f e8dcfeffff call sym.imp.write ; ssize_t write(int fd, const char *ptr, size_t nbytes)
│ 0x55a3f9b72154 90 nop
│ 0x55a3f9b72155 5d pop rbp
└ 0x55a3f9b72156 c3 ret
d
db
指令的作用是设置断点,使用范例如下:
[0x55a3f9b72135]> db 0x55a3f9b7214f
dc
指令的作用是继续执行先前的程序,直到到达下一个断点,使用范例如下(配合前面的db一起使用):
[0x55a3f9b72135]> dc
hit breakpoint at: 0x55a3f9b7214f
V
!
进入可视化模式面板,使用后效果如下: