/* file: experiment1.c ------------------- author: Ted Baker version: $Version$ last modified by: $Author: cop4610 $ on: $Date: 2002/08/21 19:27:43 $ purpose: demonstrate linux/x86 stack modification */ #include #include void alt () { fprintf (stderr, "in alt...\n"); } void sub () { char buf[10]; /* overwrite return address with entrypoint of alt */ *((int *)((char *)buf + 28)) = (int) alt; } int main (int argc, char *const argv[]) { sub (); fprintf (stderr, "done.\n"); return 0; }