当前位置: 技术问答>linux和unix
请问个缓冲区溢出光速入门中的问题
来源: 互联网 发布时间:2017-02-16
本文导语: 缓冲区溢出光速入门上的例子,请看 void why_here(void) /*这个函数没有任何地方调用过*/ { printf("why u here ?!n"); exit(0); } int main(int argc,char * argv[]) { int buff[1]; buff[2]=(int)why_here; //buff[1]覆盖了EBP,,buff[2]覆盖了EIP ret...
缓冲区溢出光速入门上的例子,请看
void why_here(void) /*这个函数没有任何地方调用过*/
{
printf("why u here ?!n");
exit(0);
}
int main(int argc,char * argv[])
{
int buff[1];
buff[2]=(int)why_here; //buff[1]覆盖了EBP,,buff[2]覆盖了EIP
return 0;
}
我在VC6上可以运行,并执行了why_here()函数,可是在linux上
编译能通过,执行时却没有why_here()函数,请问:这是为什么?
如何更改?
void why_here(void) /*这个函数没有任何地方调用过*/
{
printf("why u here ?!n");
exit(0);
}
int main(int argc,char * argv[])
{
int buff[1];
buff[2]=(int)why_here; //buff[1]覆盖了EBP,,buff[2]覆盖了EIP
return 0;
}
我在VC6上可以运行,并执行了why_here()函数,可是在linux上
编译能通过,执行时却没有why_here()函数,请问:这是为什么?
如何更改?
|
buff[2]=(int)why_here;
没有调用函数,why_here函数名,把why_here函数的指针转化为int.
函数本身没执行。
没有调用函数,why_here函数名,把why_here函数的指针转化为int.
函数本身没执行。
|
把vc6编译后的汇编和gcc编译后的汇编发上来,比对下