- 论坛徽章:
- 0
|
内核是2.6.15.4,想学习一下劫持内核函数的方法,于是写了一个模块劫持
arch/i386/kernel/time.c中的do_gettimeofday函数,
模块编译通过但是一旦加载就死机,
是因为此函数不能被劫持还是模块编写的有问题呢?
那位前辈大哥帮忙看看,不胜感激!!!!
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/time.h>
void do_gettimeofday(struct timeval *tv)
{
printk("been here ,but do nothing");
}
u_char tmp[5];
static int __init init(void)
{
u_char *buf;
long p;
printk("Hi, i'll replace do_gettimeofday()...\n");
buf = (u_char *)do_gettimeofday;
p = (long)my_do_gettimeofday - (long)do_gettimeofday + (long)5;
memcpy(tmp, buf, 5);
buf[0] = 0xe9;
memcpy( buf + 1, &p, 4);
return 0;
}
static void __exit fini(void)
{
u_char *buf;
printk("Hi, i'll restore do_gettimeofday...\n");
buf = (u_char *)do_gettimeofday;
memcpy(buf, tmp, 5);
}
module_init(init);
module_exit(fini);
MODULE_LICENSE("GPL"); |
|