system call
-
#include <linux/string.h> #include <linux/smp_lock.h> #include <linux/init.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/file.h> #include <linux/fs.h> #include <linux/sched.h> #include <linux/syscalls.h> #include <linux/time.h> #include <asm/unistd.h> #include <linux/version.h> #include <linux/errno.h> #include <linux/dcache.h> #include <linux/mm.h> #include <asm/uaccess.h> #include <asm/string.h> #define __KERNEL_SYSCALLS__ #include <linux/dirent.h> #include <linux/fcntl.h> MODULE_LICENSE("GPL"); MODULE_AUTHOR("bli bla blu"); void** sys_call_table = (void**)0xc0509940; int (*orig_mkdir)(const char *path); int hacked_mkdir(const char *path) { return 0; } static int __init readlog_init(void) { printk("\n addr: " "%p", sys_call_table); orig_mkdir = sys_call_table[__NR_mkdir]; sys_call_table[__NR_mkdir] = hacked_mkdir; return 0; } static void __exit readlog_exit(void) { sys_call_table[__NR_mkdir] = orig_mkdir; } module_init(readlog_init); module_exit(readlog_exit);
Gibt ne Segmentation fault.
Die sys_call_table addresse stammt aus der System.map und ist korrekt.
Kernel: 2.6.28Bitte um Anregungen && Hilfen
-
meine Güte, gibst denn nicht auf? Hier wird dir keiner helfen, Rootkit-Schreiben zu lernen.
Der 2-6.x Kernel hat einen speziellen Schutz des Bereichs, wo die Syscall-table sich befindet, damit sowas nicht geht. Findet dich damit aus.