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.28

    Bitte 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.


Anmelden zum Antworten