我正在尝试查看esp寄存器以了解堆栈溢出是如何发生的。
我使用x/8xw $esp
命令查看寄存器,但一直收到错误Cannot access memory at 0xffffffffffffdf30
。
有人可以告诉我问题可能是什么。
我正在使用Linux 3.13。 我按照以下链接来了解寄存器和堆栈溢出。 除了上面提到的命令,其他一切都在起作用。 在10:32的视频中,作者可以显示esp寄存器,但是当我在我的机器上时,我不能。
https://www.youtube.com/watch?v=RF7DF4kfs1E&index=1&list=PL118A3998B4401EC6
答案 0 :(得分:0)
主要问题是,该教程是针对x86架构的。
"无法访问内存0xffffffffffffdf30"
0xffffffffffffdf30是64位地址。当你使用64位系统时,你无法检查ESP寄存器,因为简单地说,没有。
例如,64位系统使用此寄存器 - RSP,RBP,RIP等。您可以在x86上将此寄存器知道为ESP,EBP和EIP。因此,如果您想继续本教程,请使用gcc将该培训.c代码编译为32位,如: gcc -m32 -o demo demo.c