12GDB在无符号表情况下调试程序

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

Original: https://www.cnblogs.com/qiumingcheng/p/15819708.html
Author: 邱明成
Title: 12GDB在无符号表情况下调试程序

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/553126/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球