0x04_工具准备
-
gdb
- 一款UNIX及UNIX-like下的调试工具。
gdb <文件名>
进入调试,输入disassemble main
查看指定函数的反汇编机器代码。set disassembly-flavor intel
转换为Intel风格的汇编break *main
:在main函数设置断点run
:运行程序info registers
:查看寄存器信息si
:执行一条指令(step instruction),若该指令有函数调用则进入该函数,相当于step into(单步跟踪进入)ni
:执行一条指令(next instruction),若该指令有函数则直接执行该函数,相当于step over(单步跟踪)
-
常用工具命令
hexdump <filename>
: 将二进制文件转换成十六进制查看,-C
以三列格式展示file <filename>
:查看文件信息,file *
查看当前目录下所有文件的信息strings <filename>
:扫描文件,打印可打印的字符序列objdump <filename>
:反汇编目标文件,-d
反汇编文件中的需要执行指令的那些section,-x
显示全部headers信息strace <filename>
:用于跟踪程序执行时进程系统调用(system call)和所接收的信号ltrace <filename>
:与strace类似,但跟踪库函数- radare2:一个开源的逆向工程和二进制分析框架。
- 安装:
git clone https://github.com/radareorg/radare2.git
,进入安装目录输入./sys/install.sh
- 使用:radare教程
- 一篇使用笔记:radare2逆向笔记
- 常用命令:
aaaa
:分析全部二进制代码,radare2会自动为我们划分各个程序并进行命名afl
:列出所有的方程信息,包括内存地址,size,bbs,名称pdf
:打印出反汇编后的汇编语言代码s <address>
:跳转到指定地址。s sym.main
跳转到main函数,sym.main
代表函数符号afvn <var1> <var2>
:将变量var1重命名为var2dc
:继续执行先前的程序,直到到达下一个断点db <address>
:设置断点VV
:可视化界面(控制流图)V!
:可视化界面。【可视化界面下键入:
可以进入命令模式,然后键入Ctrl+C
或直接回车可以重回可视化界面】
- 安装: