高版本内核写rootkit将会更加方便
高版本内核中使用jprobe提供得强大钩子接口,可以方便的hook任何内核函数。写lkm rootkit将越来越方便了。
C#代码
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/kprobes.h>
#include <linux/kallsyms.h>
#include <linux/fs.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <asm/uaccess.h>
static struct jprobe jp;
asmlinkage long new_sys_connect(int fd, struct sockaddr __user *uservaddr, int addrlen)
{
printk("socket fd: %d ", fd);
jprobe_return();
return 0;
}
int init_module(void)
{
int ret;
jp.entry = (kprobe_opcode_t *) new_sys_connect;
jp.kp.addr = (kprobe_opcode_t *)0xc05a39ab;
if (!jp.kp.addr) {
printk("Couldnt find the address of sys_open ");
return -1;
}
if ((ret = register_jprobe(&jp)) <0) {
printk("register_jprobe failed, returned %d ", ret);
return -1;
}
printk("Registered a jprobe. ");
return 0;
}
void cleanup_module(void)
{
unregister_jprobe(&jp);
printk("jprobe unregistered ");
}
MODULE_LICENSE("GPL");
补充:综合编程 , 安全编程 ,