LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 911|回复: 1

新问题!!!!!!!!!!!!!!!

[复制链接]
发表于 2003-4-21 17:00:09 | 显示全部楼层 |阅读模式
对于开始的问题,我已经实验成功,但现在又有一个新问题,请大家帮忙看看:就是怎么截获read,write系统调用,我用#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <asm/unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <asm/fcntl.h>
#include <asm/errno.h>
#include <linux/types.h>
#include <linux/dirent.h>
#include <sys/mman.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/malloc.h>
extern void* sys_call_table[]; 
/*sys_call_talbe 被引入,所以我们可以存取他*/
int (*orig_mkdir)(const char *path);
/*原始系统调用*/
int hacked_mkdir(const char *path)
{
printk("hello world/n");
/*这里你就可以按照你需要编程了*/
return orig_mkdir;   
/*返回正确的系统调用*/
}
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;
/*恢复mkdir系统调用到原来的哪个*/
}
上述方法实现将mkdir替换成read时,出现系统调用被反复截获,程序死循环了,:eek:
:eek:
大家帮忙看看,谢谢了先
 楼主| 发表于 2003-4-21 17:04:08 | 显示全部楼层

上面文件最后还要加下面一行:

MODULE_LICENSE("GPL");
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表