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

posted @ 2022-01-18 20:39  邱明成  阅读(495)  评论(0编辑  收藏  举报