源码如下:#include#include#include#includevoidgetpath(){charbuffer[64];unsignedintret;printf("inputpathplease:");fflush(stdout);gets(buffer);ret=__builtin_return_address(0);if((ret&0xbf000000)==0xbf000000){printf("bzzzt(%p)\n",ret);_exit(1);}printf("gotpath%s\n",buffer);}intmain(intargc,char**argv){getpa
我正在做类(class)作业的stack-smashing练习,我已经完成了作业,但是有一个方面我不明白。这里是目标程序:#include#include#includeintbar(char*arg,char*out){strcpy(out,arg);return0;}voidfoo(char*argv[]){charbuf[256];bar(argv[1],buf);}intmain(intargc,char*argv[]){if(argc!=2){fprintf(stderr,"target1:argc!=2\n");exit(EXIT_FAILURE);}foo(argv);r
我正在做类(class)作业的stack-smashing练习,我已经完成了作业,但是有一个方面我不明白。这里是目标程序:#include#include#includeintbar(char*arg,char*out){strcpy(out,arg);return0;}voidfoo(char*argv[]){charbuf[256];bar(argv[1],buf);}intmain(intargc,char*argv[]){if(argc!=2){fprintf(stderr,"target1:argc!=2\n");exit(EXIT_FAILURE);}foo(argv);r