Linux下gdb(插件pwndbg、pead、gef)安装及调试常用指令

gdb

一、安装指令

如果没安装gdb,先使用以下指令安装gdb

sudo  apt-get install gdb

先装,因为这个带有 parseheap、以及 heapinfo 等指令,有的场景下更好用

cd ~/
git clone https://github.com/scwuaptx/Pwngdb.git 
cp ~/Pwngdb/.gdbinit ~/

pwndbg:pwndbg (/poʊnddb æg/)是一个GDB插件,使GDB的调试不那么糟糕,重点关注低级软件开发人员、硬件黑客、逆向工程师和开发人员需要的特性

peda:GDB的Python开发协助

gef:GEF(发音为ʤɛf -“Jeff”)是一组用于x86/64、ARM、MIPS、PowerPC和SPARC的命令,用于在使用老式GDB时帮助开发人员和反向工程师

把这三个都先下载下来:

git clone https://github.com/longld/peda.git
git clone https://github.com/pwndbg/pwndbg.git
git clone https://github.com/hugsy/gef.git

pwndbg安装:

cd /pwndbg
./setup.sh

安装插件依赖:

sudo pip install keystone-engine ropper keystone-engine

更换gdb指令,在gef、pwndbg、peda中选择,选哪个就把其他都注释掉

sudo vim ~/.gdbinit
## vim后在文件内输入下方横线中内容,选择三个插件其中一个,另外两个注释掉,保存退出
-------------------------------------------------------------------------
source /home/hollk/tools/pwndbg/gdbinit.py 
#source /home/hollk/tools/peda/peda.py
#source /home/hollk/tools/gef-dev/gef.py
-------------------------------------------------------------------------

二 、用途

启动你的程序,可以按照你的自定义的要求随心所欲的运行程序

可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)

当程序被停住时,可以检查此时你的程序中所发生的事。

动态的改变你程序的执行环境

按照以下指令编译c程序,可以看着源代码进行gdb动调

gcc -g test.c -o test
//gcc中-g选项是为了获得有关调试信息,要用gdb进行调试,必须使用-g生成二进制可执行文件

三、常用指令:

  • checksec 查看elf编译的保护选项

  • aslr 查看gdb的aslr设置 aslr on 可开启alsr设置

  • file 文件名 加载objfile

  • disas addr 对地址addr处的指令进行反汇编,addr可以是函数名(但是不加* 使用函数名就无法用于参数确认;不加*,断点就不会设置到汇编语言层级的函数开头)

  • b *addr 在addr处下一个断点 b后跟函数名就不用 *

  • enable 激活断点

  • disable 禁用断点

  • info b 查看断点

  • del num 删除断点

  • x addr 查看addr处存储的数据值

  • x/wx $esp   以4字节16进制显示栈中内容

  • stack 100   插件提供,显示栈中100项

  • find xxx   快速查找,很实用

  • r 运行被调试的程序

  • c 继续运行

  • ni 单步执行不进入函数调用

  • si 单步执行并进入函数调用

  • elfsymbol – 获取non-debugging symbol信息(plt表)

  • parseheap 可以对heap进行分析,得到相关信息

  • dumprop –在给定内存范围中Dump出所有ROP gadgets

  • vmmap 得到虚拟映射地址,同时可查看执行权限

  • heapinfo 查看bin链信息

  • heapbase 查看堆地址

  • finish 执行到函数返回

  • arena 查看mainarena

  • telescope 地址 可以查看一小段该地址的内容

  • dumpargs– 函数将要被调用时,显示将要被传入函数的所有参数

  • readelf – 获取elf头信息

  • x/<n/f/u>其中n、f、u是可选的参数

    x/s 地址  查看字符串

    x/wx 地址  查看DWORD

    x/c 地址  单字节查看

    x/16x $esp+0x12 查看寄存器偏移(16代表查看16个)

    set args 可指定程序运行时参数。(如:set args 10 20 30 40 50)

    show args 命令可以查看设置好的运行参数。

参数意义:

s 按字符串输出

x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十六进制格式显示无符号整型。

o 按八进制格式显示变量。

t 按二进制格式显示变量。

a 按十六进制格式显示变量。

c 按字符格式显示变量。

f 按浮点数格式显示变量。

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShouCheng3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值