Gdb的简单用法(二进制篇)
1.显示信息
-i(info)
-p(print)
-x(examine)
-内存
1.x/显示数量.显示类型.显示长度(help x 查看 类型 长度)+ *地址
2.x/显示数量.显示类型.显示长度 + $寄存器
3.p + *地址:打印此地址处存的值
(p/类型 也可改变要显示的值的输出类型[ 二进制 十进制 十六进制等 ])
4.p + **地址:打印此地址中存的地址中存的值(*此处表示类似于指针中的*)
5.p + $寄存器:打印寄存器中存的值
6.i proc m(vvmap):查看内存信息
-栈
1.bt(info stack):查看栈中调用的函数
2.stack + n:查看当前栈函数的栈中的情况(默认显示10行 n为显示的行数)
3.i(info) f:查看当前栈的详细情况()
4.frame n:查看第n(从0开始)层栈中的栈函数
-寄存器
1.i reg(register):查看寄存器信息
2.i all-registers:查看所有寄存器信息
3.x 或 p + $寄存器:查看特定寄存器内的信息
-运行信息
i program(进程号 程序运行处的地址 停止原因)
-设置自动显示变量
1.display/格式 + 地址(或变量$xxx)
2.i display:查看自动显示信息
3.d display + 号:删除自动显示点
2.断点
-设置断点
1.b(break) + 函数名:在函数处设置断点
2.b + 地址:在地址处设置断点
3.b + (函数名+偏移)
4.b:在下一行设置断点
-删除断点
d + 断点号
-查看断点号
i(info) b(break)
-断点的禁用启用
1.disable + 断点号:禁用断点
2.enable + 断点号:启用断点
3.调试
-连接文件
1.gdb + 文件名
2.gdb进入 file + 文件名
3.gdb进入 attach + 进程id号
-运行文件
1.start:运行到程序main函数处
2.r:运行程序 run
3.c:继续运行 continuing
4.si:单步步入(OD F7)
5.ni:单步步过(OD F8)
6.finish:运行结束当前函数
7.disassemble :反汇编
4.修改程序流程
-程序倒跑
record 之后 rsi启用倒跑
-set:修改内存
-return:强制返回
-call:强制调用
-jump:前置跳转
5.打开窗口(有pead插件后会发生错误)
-layout:用于分割窗口,可以一边查看代码,一边测试
(查看源代码、汇编、段代码+汇编 、源代码/汇编+寄存器)
-ctrl + x,再按a:回到传统模式和窗口模式切换
6.其他
-q:退出
-重定位:r > outfile r < infile
-回车:重复上一指令