Theseus

pwndbg + gdb
基本指令1、help //帮助2、i //info,查看一些信息,只输入info可以看可以接什么参数,下面几个比较...
扫描右侧二维码阅读全文
11
2020/07

pwndbg + gdb

基本指令

1、help //帮助
2、i //info,查看一些信息,只输入info可以看可以接什么参数,下面几个比较常用
3、i b //常用,info break 查看所有断点信息(编号、断点位置)
4、i r //常用,info registers 查看各个寄存器当前的值
5、i f //info function 查看所有函数名,需保留符号
6、show //和info类似,但是查看调试器的基本信息,如:
7、show args //查看参数
8、rdi//∗∗常用∗∗,rdi //常用,rdi//∗∗常用∗∗,+寄存器名代表一个寄存器内的值,用在地址上直接相当与一个十六进制变量
9、backtrace //查看调用栈
10、q //quit 退出,常用

执行指令

1、s //单步步入,遇到调用跟进函数中,相当于step into,源码层面的一步
2、si //常用,同s,汇编层面的一步
3、n //单步补过,遇到电泳不跟进,相当于step over,源码层面的一步
4、ni //常用,同n,汇编层面的一步
5、c //continue,常用,继续执行到断点,没断点就一直执行下去
6、r //run,常用,重新开始执行

断点指令

下普通断点指令b(break):

1、b *(0x123456) //常用,给0x123456地址处的指令下断点
2、b *rebase(0x123456)//rebase(0x123456) //rebase(0x123456)//rebase 在调试开PIE的程序的时候可以直接加上程序的随机地址
3、b fun_name //常用,给函数fun_name下断点,目标文件要保留符号才行

    b file_name:fun_name

4、b file_name:15 //给file_name的15行下断点,要有源码才行

    b 15

5、b +0x10 //在程序当前停住的位置下0x10的位置下断点,同样可以-0x10,就是前0x10
6、break fun if $rdi==5 //条件断点,rdi值为5的时候才断

删除、禁用断点:

使用info break(简写: i b)来查看断点编号
delete 5 //常用,删除5号断点,直接delete不接数字删除所有
disable 5 //常用,禁用5号断点
enable 5 //启用5号断点
clear //清除下面的所有断点

打印指令

查看内存指令X:

x /nuf 0x123456 //常用,x指令的格式是:x空格/nfu,nfu代表三个参数

       n代表显示几个单元(而不是显示几个字节,后面的u表示一个单元多少个字节),放在’/'后面
       u代表一个单元几个字节,b(一个字节),h(俩字节),w(四字节),g(八字节)
       f代表显示数据的格式,f和u的顺序可以互换,也可以只有一个或者不带n,用的时候很灵活
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
s 按字符串显示。
b 按字符显示。
i 显示汇编指令。

x /10gx 0x123456 //常用,从0x123456开始每个单元八个字节,十六进制显示是个单元的数据
x /10xd $rdi //从rdi指向的地址向后打印10个单元,每个单元4字节的十进制数
x /10i 0x123456 //常用,从0x123456处向后显示十条汇编指令

打印指令P(print):

p fun_name //打印fun_name的地址,需要保留符号
p 0x10-0x08 //计算0x10-0x08的结果
p &a //查看变量a的地址
p *(0x123456) //查看0x123456地址的值,注意和x指令的区别,x指令查看地址的值不用星号
p $rdi //显示rdi寄存器的值,注意和x的区别,这只是显示rdi的值,而不是rdi指向的值
p *($rdi) //显示rdi指向的值

堆操作指令(pwndbg)

arena //显示arena的详细信息

     arenas //显示所有arena的基本信息
     arenainfo //好看的显示所有arena的信息

bins //常用,查看所有种类的堆块的链表情况

     fastbins //单独查看fastbins的链表情况
     largebins //同上,单独查看largebins的链表情况
     smallbins //同上,单独查看smallbins的链表情况
     unsortedbin //同上,单独查看unsortedbin链表情况
     tcachebins //同上,单独查看tcachebins的链表情况
     tcache //查看tcache详细信息

heap //数据结构的形式显示所有堆块,会显示一大堆

     heapbase //查看堆起始地址
     heapinfo、heapinfoall //显示堆得信息,和bins的挺像的,没bins好用
     parseheap //显示堆结构,很好用

tracemalloc //好用,会跟提示所有操作堆的地方

pwndbg独有的指令

cyclc 50 //生成50个用来溢出的字符,如:aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaama

$reabse //开启PIE的情况的地址偏移

         b *$reabse(0x123456) //断住PIE状态下的二进制文件中0x123456的地方
         codebase //打印PIE偏移,与rebase不同,这是打印,rebase是使用

stack //查看栈

         retaddr //打印包含返回地址的栈地址

canary //直接看canary的值

plt //查看plt表

        got //查看got表

hexdump //像IDA那样显示数据,带字符串

最后修改:2020 年 07 月 11 日 08 : 02 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论