#include #include #include #include #include #include int main(void) { char s[128]; int wstatus; pid_t pid; pid = fork(); memset(s, 0, sizeof(s)); if (pid) { do { wait(&wstatus); if (WIFSIGNALED(wstatus) || ((char)(WIFSIGNALED(wstatus) + 1) >> 1 > 0)) { puts("child is exiting..."); return 0; } } while (ptrace(PTRACE_PEEKUSER, pid, 44, 0) != 11); puts("no exec() for you"); kill(pid, 9); } else { prctl(1, 1); ptrace(PTRACE_TRACEME, 0, 0, 0); puts("Give me some shellcode, k"); gets(s); } return 0; }