当您尝试覆盖$esp
指针时,您有没有遇到以下问题?Ubuntu 11.10上的Smashing Stack
当然,尝试一个合法的缓冲区大小始终有效!但是,当您尝试增加缓冲区大小以覆盖$esp
,并且设法成功触摸$esp
的第一个字节,第二个字节或第三个字节时,它可以很好地工作。但是,只要您尝试覆盖$esp
的整个4个字节,它就会完全改变它的内容以及地址。它不再显示41
s,因为我使用“A”填充缓冲区。我附上了一个屏幕截图,也许它会解释更多细节。谢谢大家。
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv)
{
char buffer[500];
strcpy(buffer, argv[1]);
return 0;
}