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 按浮点数格式显示变量。
Linux下gdb(插件pwndbg、pead、gef)安装及调试常用指令相关推荐
- linux eclipse插件安装,Linux 下 EclipseME 插件的安装步骤
Linux 下 EclipseME 插件的安装步骤 最近在linux下作开发,参考网络资料,成功将 eclipseME 插件安装至 eclipse.这里记录下来,只为了方便更多的人! 背景: linu ...
- Linux下boost库的编译、安装详解
1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...
- linux显卡驱动mxm,linux下我的FX5200显卡驱动安装
linux下我的FX5200显卡驱动安装 发布时间:2008-09-20 16:42:33来源:红联作者:Keiboc 一.为什么要装驱动 一般情况下,只要你下载了LINUX的最新发行版本,比如Fed ...
- linux下gdb调试方法和技巧详解
linux下gdb调试方法和技巧整理 简介 UNIX或者UNIX-like下调试工具 启动gdb # 1. 在可执行程序不需要输入参数时,我们可以使用 gdb + 可执行程序 gdb ./typeid ...
- VMware Linux下拖拽补丁vmtools的安装和卸载
Linux下拖拽补丁vmtools的安装和卸载 by:授客 QQ:1033553122 Vmware 8.0.4为例子 步骤1.VM->Install Vmware Tools... 步骤2.查 ...
- linux常用调试,linux下gdb常用的调试命令
用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法.接下来是小编为大家收集的linux下gdb常用的调试命令,希望能帮到大家. linux下gdb常用的调试命令 ...
- apache安装_kali Linux下的Apache的配置和安装:
kali Linux下的Apache的配置和安装: 首先,我要说的是,今天浪费了太多的时间在yum的安装上面,一直出现bash:yum命令不可用.去找了教程需要rpm下载一些包,于是又出现bash:r ...
- Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案
Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 参考文章: (1)Linux下Centos7以rpm方式离线安装MySQL5.7教程以及部分报错解决方案 (2) ...
- mysql5.6.24安装perl,linux下perl操作MySQL数据库(需要安装DBI)
这篇文章主要为大家详细介绍了linux下perl操作MySQL数据库(需要安装DBI),具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!DBI安装:D ...
最新文章
- pongo - 字符串消除
- java 条件变量_Windows下条件变量的实现
- 【数据结构与算法】之深入解析“地图分析”的求解思路与算法示例
- rx ajax,ajax_RxJS 中文文档_w3cschool
- android 拼图课程设计,拼图游戏设计_课程设计报告.docx
- Dart 基礎 - 3
- ORACLE—002:Create创作型
- iOS开发之UITextField(输入框)限制只能输入整数和小数
- 【模拟】Workout for a Dumbbell
- 解码H264帧要注意的两个问题
- STM32 使用DMA+DAC+TIMER 输出正弦波
- dell 电脑关闭触摸板的。
- 软件测试面试题(面试前准备篇)
- 经营项目计算机、软件及辅助设备、
- Display 亮度调节
- MySQL系列之STRAIGHT JOIN用法简介
- python3爬取网易云歌曲的相关信息
- 算法心得:高效算法的奥秘 作者:[美] Henry S. Warren, Jr.
- Unity中在Game窗口画线
- 利用Python在网上接单,兼职也能月薪过万,真的假的?
热门文章
- contour()函数的理解
- 牛客练习赛107 A~D除C
- 苹果app签名TF签名如何下载安装?
- 【论文简读】Diffusion Kernel Attention Network for Brain Disorder Classification用于脑疾病分类的扩散核注意力网络
- 利用信号量机制实现前驱关系
- 详解OpenCV的椭圆曲线点坐标近似计算函数ellipse2Poly()
- 快速搭建centos7虚拟机——使用virtualbox+vagrant
- 如何用 Node.js 实现一个简单的 Websocket 服务?
- springboot后台搭建及登录注册接口编写
- 2020李宏毅学习笔记——16.Recurrent Netural Network 下