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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2020-01-18 linux环境下时区无法设置(Asia/Shanghai (UTC, 0000))的问题解决
2020-01-18 Python Inotify 监视LINUX文件系统事件