GDB是一个非常常用的调试工具,我们可以使用它来追踪运行时的程序,主要用于动态分析。
以后面要分析的程序(simple_main)为例,可以使用下面的命令来做调试
gdb bin/simple_main
然后我们给main函数下一个端点
b main
然后运行该程序
r
断点命中后,我们可以分析此时的寄存器信息
info registers
以及查看这些寄存器所指向区域的数据或者代码
比如我们要看栈上数据
x /-16xg $rbp
或者看RIP指向的代码
disassemble $rip
然后通过单步调试等方法,查看相关寄存器和内存的变化
GDB非常强大,但是需要记下很多命令,而且其交互所展现的信息量也比较有限。如果只是做代码查看性分析,而不需要其运行态的一些信息,则可以考虑使用下面介绍的静态分析工具IDA。