GDB基本使用及pwn常用命令
GDB基本使用及pwn常用命令
i r查看寄存器
start
运行程序,停在 main
函数的第一行。
run
从程序的入口点开始执行,并会一直运行,直到.程序正常结束。
b main ,b *(0xdsds)设置断点
i b查看断点,d main删除断电,disable b 2,让断点失效。enable b 3
si会进入xx方法实现的里面
ni是下一步。finish步出
c继续
显示从地址0x100开始的10个十六进制数:x/10x 0x100
显示从寄存器$rax开始的4个无符号十进制数:x/4uw $rax
显示字符数组str的内容,直到遇到’\0’结束:x/s str
x/20g $rbp-0x20
:这个命令表示从地址$rbp-0x20
开始,以十六进制格式打印20个g
大小的内存单元。这里的g
通常代表8字节(64位)的巨量(giant word)。所以它会打印20个8字节的值,总共160字节的数据。这种格式通常用于查看较大数值或指针地址(在64位系统上指针也是8字节)。x/20b $rbp-0x20
:这个命令表示从地址$rbp-0x20
开始,以十六进制格式打印20个b
大小的内存单元。这里的b
代表字节(byte)。因此它会打印20个1字节的值,总共20字节的数据。这种格式常用于查看单个字节的内容,比如字符数据或者要逐字节分析的二进制数据。x/20i
含义:这个命令表示从指定地址开始,以指令的形式显示接下来的20条汇编指令x/20s
含义:该命令表示从指定地址开始,以字符串的形式显示接下来的20个字符串项。命令
x/20gx 0x404018
是 GDB 调试器中用于检查内存内容的指令,具体含义如下:x
:这是 examine(检查)命令的缩写,用来查看内存中的数据。/20g
:这部分指定了要显示的数据项的数量和格式。其中20
表示要显示20个数据项,g
表示每个数据项是64位巨量(giant word),即8字节的数据。所以总共会显示20 * 8 = 160字节的数据。x
:这里的x
指定输出格式为十六进制(hexadecimal)。这意味着每个8字节的数据将被解释并以十六进制的形式显示。0x404018
:这是你想要检查的起始内存地址。它是一个具体的内存位置,从这里开始读取数据。
因此,
x/20gx 0x404018
的意思是:从内存地址0x404018
开始,以十六进制格式显示接下来的20个8字节(64位)的数据值。这对于查看指针、长整数或其他占用8字节空间的数据类型非常有用,尤其是在调试涉及64位架构的程序时。
查看内存使用情况:
1 | ps -a|grep questio |
file xx查看文件
ldd查看库函数位置
objdump
是一个强大的 二进制分析工具,它用于反汇编和查看二进制文件的内容。主要用于分析可执行文件、目标文件、库文件(如 .so
)以及其他二进制格式文件(如 ELF、PE 等)。
1 | objdump -d xxx |
1 | objdump -t filename |