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 按浮点数格式显示变量。

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

  1. linux eclipse插件安装,Linux 下 EclipseME 插件的安装步骤

    Linux 下 EclipseME 插件的安装步骤 最近在linux下作开发,参考网络资料,成功将 eclipseME 插件安装至 eclipse.这里记录下来,只为了方便更多的人! 背景: linu ...

  2. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

  3. linux显卡驱动mxm,linux下我的FX5200显卡驱动安装

    linux下我的FX5200显卡驱动安装 发布时间:2008-09-20 16:42:33来源:红联作者:Keiboc 一.为什么要装驱动 一般情况下,只要你下载了LINUX的最新发行版本,比如Fed ...

  4. linux下gdb调试方法和技巧详解

    linux下gdb调试方法和技巧整理 简介 UNIX或者UNIX-like下调试工具 启动gdb # 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid ...

  5. VMware Linux下拖拽补丁vmtools的安装和卸载

    Linux下拖拽补丁vmtools的安装和卸载 by:授客 QQ:1033553122 Vmware 8.0.4为例子 步骤1.VM->Install Vmware Tools... 步骤2.查 ...

  6. linux常用调试,linux下gdb常用的调试命令

    用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法.接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家. linux下gdb常用的调试命令 ...

  7. apache安装_kali Linux下的Apache的配置和安装:

    kali Linux下的Apache的配置和安装: 首先,我要说的是,今天浪费了太多的时间在yum的安装上面,一直出现bash:yum命令不可用.去找了教程需要rpm下载一些包,于是又出现bash:r ...

  8. Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案

    Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 参考文章: (1)Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 (2) ...

  9. mysql5.6.24安装perl,linux下perl操作MySQL数据库(需要安装DBI)

    这篇文章主要为大家详细介绍了linux下perl操作MySQL数据库(需要安装DBI),具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!DBI安装:D ...

最新文章

  1. pongo - 字符串消除
  2. java 条件变量_Windows下条件变量的实现
  3. 【数据结构与算法】之深入解析“地图分析”的求解思路与算法示例
  4. rx ajax,ajax_RxJS 中文文档_w3cschool
  5. android 拼图课程设计,拼图游戏设计_课程设计报告.docx
  6. Dart 基礎 - 3
  7. ORACLE—002:Create创作型
  8. iOS开发之UITextField(输入框)限制只能输入整数和小数
  9. 【模拟】Workout for a Dumbbell
  10. 解码H264帧要注意的两个问题
  11. STM32 使用DMA+DAC+TIMER 输出正弦波
  12. dell 电脑关闭触摸板的。
  13. 软件测试面试题(面试前准备篇)
  14. 经营项目计算机、软件及辅助设备、
  15. Display 亮度调节
  16. MySQL系列之STRAIGHT JOIN用法简介
  17. python3爬取网易云歌曲的相关信息
  18. 算法心得:高效算法的奥秘 作者:[美] Henry S. Warren, Jr.
  19. Unity中在Game窗口画线
  20. 利用Python在网上接单,兼职也能月薪过万,真的假的?

热门文章

  1. contour()函数的理解
  2. 牛客练习赛107 A~D除C
  3. 苹果app签名TF签名如何下载安装?
  4. 【论文简读】Diffusion Kernel Attention Network for Brain Disorder Classification用于脑疾病分类的扩散核注意力网络
  5. 利用信号量机制实现前驱关系
  6. 详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly()
  7. 快速搭建centos7虚拟机——使用virtualbox+vagrant
  8. 如何用 Node.js 实现一个简单的 Websocket 服务?
  9. springboot后台搭建及登录注册接口编写
  10. 2020李宏毅学习笔记——16.Recurrent Netural Network 下