这是我正在处理的一个 CTF 问题。希望在这里问这个问题是合适的。
以上是段错误关闭时的 GDB 输出。movaps是违规指令,这意味着它rsp+0x40很可能指向未映射的内存。
然而,仔细看看为堆栈分配的内存
和rsp=0x00007ffde19d78a8从所述GDB输出,显示,rsp+0x40是很好的分配范围内。这对我来说真的很困惑,我在这里遗漏了什么吗?我还可以研究其他什么来调试这个?
最后运行它时的输出 strace
[pid 32671] --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=NULL} ---
[pid 32671] +++ killed by SIGSEGV (core dumped) +++
表明它显然是一个空指针取消引用 ( si_addr=NULL),这对我来说没有任何意义,因为违规指令movaps XMMWORD PTR [rsp+0x40],xmm0没有访问 NULL 指针?

