主题:linux修改系统调用怎么写啊???????????
一个linux的实验:修改系统调用
要求:编写一个模块来修改系统调用,当这个模块加载到内存中以后,新的系统调用会代替老的系统调用,我们写了一下程序,有错误。请帮忙改正!
#define MODULE
#define __KERNEL__
#include <linux/kernel.h>
#include <linux/module.h>
#include <sys/syscall.h>
extern void* sys_call_table[];
//int SYS_mkdir;
int (*orig_mkdir)(const char *path);
int hacked_mkdir(const char *path)
{
return 0;
}
int init_module(void)
{
orig_mkdir=sys_call_table[SYS_mkdir];
sys_call_table[SYS_mkdir]=hacked_mkdir;
return 0;
}
void cleanup_module(void)
{
sys_call_table[SYS_mkdir]=orig_mkdir;
}MODULE_LICENSE("GPL");
要求:编写一个模块来修改系统调用,当这个模块加载到内存中以后,新的系统调用会代替老的系统调用,我们写了一下程序,有错误。请帮忙改正!
#define MODULE
#define __KERNEL__
#include <linux/kernel.h>
#include <linux/module.h>
#include <sys/syscall.h>
extern void* sys_call_table[];
//int SYS_mkdir;
int (*orig_mkdir)(const char *path);
int hacked_mkdir(const char *path)
{
return 0;
}
int init_module(void)
{
orig_mkdir=sys_call_table[SYS_mkdir];
sys_call_table[SYS_mkdir]=hacked_mkdir;
return 0;
}
void cleanup_module(void)
{
sys_call_table[SYS_mkdir]=orig_mkdir;
}MODULE_LICENSE("GPL");