GDB

作者: 1Oin0 | 来源:发表于2019-05-06 19:01 被阅读0次

    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

        本文链接:https://www.haomeiwen.com/subject/azmkoqtx.html