【GDB】手把手教你用gdb调试程序(超清晰流程)_gdb教程-CSDN博客
[动态分析工具 - 2.3.1 GDB - 《CTF 竞赛入门指南(CTF All In One)》 - 书栈网 · BookStack](https://www.bookstack.cn/read/CTF-All-In-One/doc-2.3.1_gdb.md#2.3.1 GDB)
基本GDB命令
命令 | 全称 | 解释 |
---|---|---|
l | list | 查看源码 |
b | break | 设置断点 |
r | run | 运行程序,在断点处停止 |
n | next | 单条语句执行 |
c | continue | 继续运行程序,下一个断点处停止 |
p | 打印 | |
q | quit | 退出GDB |
注:
next(简写 n ):单步执行程序,但是遇到函数时会直接跳过函数,不进入函数;
step(简写 s) :单步执行程序,但是遇到函数会进入函数;
例题练习
攻防世界 simple-check-100
1、先用IDA分析主函数,发现只需要让if成立即可得到flag,即check_key(v9)==1
2、在Linux中用gdb调试,修改寄存器的值
先将文件拖入Ubuntu,再打开终端,输入gdb,启动调试程序
打开文件进行调试
1 | file 文件名 |
设置断点,一个设置在主函数,一个设置在if判断的位置,r运行程序
if判断位置的地址用IDA查看,test eax,eax就是判断if是否成立的位置
3、c继续运行程序直到下一个断点前,任意输入key的值
4、此时eax的值为0,将其修改为1,继续运行程序即可得到flag