我偶然发现了一个简单的缓冲区溢出(嘿,你知道什么?)教程,并认为我可以尝试一下。该视频大约20分钟长,但非常有趣,如果您不熟悉这些内容,我建议您观看。这是网址:
http://www.securitytube.net/video/1752
我的问题出现在 14:17 左右,此时他输入一个命令来查找堆栈指针,但我输入相同的命令,使用几乎相同的代码(不同的内存位置)并得到这个:
(gdb) i r esp
Invalid register `esp'
我真的不知道为什么会发生这种情况,我还不知道它是如何工作的。我是否覆盖了堆栈指针或其他东西?我实际上是通过Windows 7上的Virtual Box运行linux的,最新版本是Backtrack linux。
您需要在寄存器前面加上"$",即
i r $esp
当您使用的是 64 位 gdb 时,寄存器名称为 $rsp
。