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 |

















