查看堆栈溢出寄存器错误

时间:2015-02-21 22:00:17

标签: linux

我正在尝试查看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

1 个答案:

答案 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