Linux下gdb(插件pwndbg、pead、gef)安装及调试常用指令 | 您所在的位置:网站首页 › 怎样运行插件程序 › 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.gitpwndbg安装: 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是可选的参数 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 按浮点数格式显示变量。 |
CopyRight 2018-2019 实验室设备网 版权所有 |