我正在阅读一个教程,该教程向您展示如何在示例 C 程序中利用基于堆栈的缓冲区溢出。C代码是:
#include <string.h>
void function(char *str) {
char buffer[1024];
strcpy(buffer,str);
}
int main(int argc,char *argv[])
{
char aaa[500];
function(argv[1]);
}
按照作者的说法,如果我们写 1032 个“A”,我们应该能够在 EIP 寄存器中看到“AAAA”。我理解它背后的理论。但是,在 Windows 7 32 位上运行它并使用 Immunity Debugger 对其进行调试时,它会显示“进程终止退出代码 C0000409 ”。EIP指向“ ntdll.RT lUserThreadStart ”。请指教。