因为GDB类似于windbg都是基于命令行的调试器,所以会出现一些指令,记录一下,长时间不用就忘了

GDB原理

GDB调试包括2个程序:gdb程序和被调试程序。根据这2个程序是否运行在同一台电脑中,可以把GDB的调试模型分为2种:本地调试,远程调试。远程调试我没用过

本地调试

就直接在本地进行调试

远程调试

利用gdbserver来进行远程调试

GDB插件

peda

$ git clone https://github.com/longld/peda.git ~/peda
$ echo "source ~/peda/peda.py" >> ~/.gdbinit

这个是最常用的一个,可以结构话的高亮一些代码

gef

pwndbg

GDB命令

断点

breakpoint:软件断点

hbreakpoint:硬件断点

rwatch:设置读取观察点,实现内存断点

watch:写入时gdb中断

awatch:读写都中断

t前缀:一次性断点

info b:查看断点

enable:激活断点

disable:禁用断点

修改值

set $eax=10:修改寄存器或者内存中的值,利用set命令

查看值

x/ </addr/> n、f、u是可选的参数。

x /4xg $ebp:查看ebp开始的4个8字节内容 x/wx $esp   以4字节16进制显示栈中内容 b表示单字节,h表示双字节,w表示四字 节,g表示八字节 s 按字符串输出 x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。 i:反汇编

heapinfo:查看堆的信息

调式值

r:run开始执行

n:单步步过

s:单步步入

c:继续执行到下一个断点

fini:结束当前函数

context:查看运行上下文

stack 10:显示栈中的10项

bt:查看当前栈帧

启动

checksec:查看程序保护

pattern 100:生成100个随机字符,用于判断栈溢出

pattren offset “str”:用来定位偏移

set args:指定运行时参数

show args:查看设置的运行参数

附加进程

gdb procname pid

gdb -p pid

gdb attach pid(需要先启动gdb)

调试core文件

gdb procname corename

没有版权,随便复制,免费的知识应该共享 all right reserved,powered by Gitbook该文章修订时间: 2023-04-11 22:08:58

results matching ""

    No results matching ""