Здравствуйте не подскажите как можно перехватить системные вызовы open create read write?
upd: нашел модуль ядра помогите скомпилировать
C
#include <linux/module.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <asm/uaccess.h>
extern void *sys_call_table[];
int (*orig_open)(const char *pathname, int flag, int mode);
int own_open(const char *pathname, int flag, int mode)
{
char *kernel_path;
char hide[]="test.txt";
kernel_path=(char *)kmalloc(255,GFP_KERNEL);
copy_from_user(kernel_path, pathname, 255);
if(strstr(kernel_path,(char *)&hide) != NULL)
{
kfree(kernel_path);
return -ENOENT;
}
else
{
kfree(kernel_path);
return orig_open(pathname, flag, mode);
}
}
int init_module()
{
orig_open=sys_call_table[SYS_open];
sys_call_table[SYS_open]=own_open;
return 0;
}
void cleanup_module()
{
sys_call_table[SYS_open]=orig_open;
}