GDB

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
-回车:重复上一指令

你可能感兴趣的:(GDB)