#include #include #include #include int main(int argc, char *argv[]) { pid_t target_pid; int status; if(argc != 2) { printf("Usage: %s \n", argv[0]); return -1; } target_pid = atoi(argv[1]); prctl(PR_SET_PTRACER, target_pid, 0, 0, 0); ptrace(PTRACE_ATTACH, target_pid, 0, 0); waitpid(target_pid, &status, 0); if(WIFSTOPPED(status)) { long ret; ret = syscall(__NR_execve, "/bin/sh", NULL, NULL); ptrace(PTRACE_DETACH, target_pid, 0, 0); } return 0; }