pwndbg/gdb的使用
X的使用
x 是 examine 的缩写
n 表示要显示的内存单元的个数
u 表示一个地址单元的长度:
b 表示单字节
h 表示双字节
w 表示四字节
g 表示八字节
f 表示显示方式,可取如下值:
x 按十六进制格式显示变量
d 按十进制格式显示变量
u 按十进制格式显示无符号整型
o 按八进制格式显示变量
t 按二进制格式显示变量
a 按十六进制格式显示变量
i 指令地址格式
c 按字符格式显示变量
f 按浮点数格式显示变量
举例
x /20gx buf: 表示从内存地址 buf 读取内容,g 表示八字节,20 表示 20 个单位,x 按十六进制格式显示变量
x /3hu buf:表示从内存地址 buf 读取内容,h 表示以双字节为一个单位,3 表示三个单位,u 表示十进制格式显示无符号整型
P的使用
打印指令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指向的值