溢出产生的原因:
1.使用非类型安全(non-type-safe)的语言如C/C++
2.以不可靠的方式存取或者复制内存缓冲区
3.编译器设置的内存缓冲区太靠近关键数据结构
ES附加段寄存器
创建后要提权
-m32表示编译成32位文件
注意:因为GDB是在管理员权限下安装的,所以必须要在管理员权限下才能运行
leave指令等价于 mov esp,ebp
pop ebp
enter指令等价于 push ebp
mov ebp,esp
设置断点可以通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。
break 函数名
break 行号
break 文件名:函数名
break 文件名:行号
break +偏移量
break -偏移量
break *地址
r是运行
n是单步执行,next遇到函数不会进入函数内部
si是步入,step会执行到函数内部
c是继续运行,调试时,使用continue命令继续执行程序。程序遇到断电后再次暂停执行;如果没有断点,就会一直执行到结束。
删除断点通过命令包括:
delete <断点id>:删除指定断点
delete:删除所有断点
clear
clear 函数名
clear 行号
clear 文件名:行号
clear 文件名:函数名
查看断点:
info br
简写:i b