Source Code: char buf[256]; int main(int argv,char **argc) { char *pbuf=(char*)malloc(256); // gets(buf); strcpy(buf,argc[1]); free(pbuf); } Memory Layout Diagram: +--------------+ <---0x08049680 |AAAAAAAAAAAAAA| \ |AAAAAAAAAAAAAA| | |AAAAAAAAAAAAAA| | |AAAAAAAAAAAAAA| |<--buf[256] (2440 Bytes?!?) |AAAAAAAAAAAAAA| | |AAAAAAAAAAAAAA| | |AAAAAAAAAAAAAA| / +--------------+ <---0x0804a008 | 0xFFFFFFFC | \ +--------------+ | | 0xFFFFFFFC | | +--------------+ |<---pbuf ( | AAAAAAAA | | +--------------+ | | .dtors - 12 | | +--------------+ | | shellcode | / +--------------+