理论上我觉得用下面这个方法可以替换KERNEL中任何函数 欢迎大家一起讨论
#define MODULE
#define __KERNEL__
#define LINUX
#define EXPORT_SYMTAB
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>
#ifndef KERNEL_VERSION
#define KERNEL_VERSION(a,b,c) ((a)*65536+(b)*256+(c))
#endif
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
int
my_register_chrdev(unsigned int major, const char * name, struct file_operations *fops)
{
printk("Hi!\n");
return(-1);
}
u_char tmp[5];
int
init_module(void)
{
u_char *buf;
long p;
buf=(u_char *)register_chrdev;
p=(long)my_register_chrdev-((long)register_chrdev+(long)5);
memcpy(tmp,buf,5);
buf[0]=0xe9;
memcpy(buf+1,&p,4);
return 0;
}
void
cleanup_module(void)
{
u_char *buf;
buf=(u_char *)register_chrdev;
memcpy(buf,tmp,5);
}
EXPORT_SYMBOL(my_register_chrdev);
MODULE_LICENSE("GPL");
梦想离欲望远一点 快乐靠自己近一些
文章选项:
|