我想以十六进制的形式从堆栈顶部打印1个单词。为此,我键入以下内容:
(gdb) x/1xw $esp
但GDB不断涌现:
0xffffffffffffe030: Cannot access memory at address 0xffffffffffffe030
我正在尝试调试的程序已经将一个值推送到堆栈上,以防万一你想知道我可能在程序的最开始时尝试访问内核变量,但事实并非如此。 任何的想法?
答案 0 :(得分:2)
a
是一个64位常量,因此您在x64位模式下运行。但0xffffffffffffe030
是一个32位寄存器(在此上下文中GDB符号扩展为64位)。 64位堆栈指针称为$esp
。试试这个:
$rsp