12GDB在无符号表情况下调试程序
1)加载无符号表程序
2)断点到某一个函数,通过tab键可以模糊匹配查找要断点的函数
3)运行程序
4)查看第一个参数寄存器:i r rdi,我们传入的是字符a,可以看到查看到的值是97(字符a的ascii),符合预期。
5)查看第二个参数寄存器:i r rsi,我们传入的是整数876,可以看到查看到的值也是876
6)查看第三个参数寄存器:i r rdx,我们传入的是字符串"abcd",可以看到查看到,我们只能看到地址,但是可以通过该地址,使用以下两种方式获取到对应的真正的值:
a)p (char*)0x400ed5
b)x /s 0x400ed5,其中s代表是字符串格式
c) x /s $rdx,查看存储字符串参数寄存器的地址
另外,说明如下:
a. 函数参数寄存器如下:
rdi 第一个参数
rsi 第二个参数
rdx 第三个参数
rcx 第四个参数
r8 第五个参数
r9 第六个参数
多于6个的参数会放到函数栈里面了,而不是放到寄存器里了。
b. 查看所有通用寄存器:
i registers
c. 查看所有寄存器:(不常用)
i registers