考试网 >> IT认证 >> Linux >> Linux指导 >> Linux系统可卸载内核模块完全指南(中)

Linux系统可卸载内核模块完全指南(中)

发布时间:2006-06-28 10:07     点击:
分页:上一页  1 [2] 3 4 5 6 7 8 9 10  下一页  后10页



  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.1)。然后尝试新建一个目录,你会发现不能成功。由于返回值是0(代表一切正常)我们得不到任何出错信息。在移区模块之后,我们又可以新建目录了。正如你所看到的,我们只需要改变sys_call_table(见1.2)中相对应的入口就可以截获到系统调用了。



  截获系统调用的通常步骤如下:



  找到你需要的系统调用在sys_call_table[]中的入口(看一眼include/sys/syscall.h)



  保存sys_call_table[x]的旧入口指针。(在这里x代表你所想要截获的系统调用的索引)



  将你自己定义的新的函数指针存入sys_call_table[x]



  你会意识到保存旧的系统调用指针是十分有用的,因为在你的新调用中你会需要他来模拟原始调用。当你在写一个'Hack-LKM'时你所面对的第一个问题是:



  我到底该截获哪个系统调用?

[Page: ]



 2.2一些有趣的系统调用







  你并不是一个管理内核的上帝,因此你不知道每一个用户的应用程序或者命令到底使用了那些系统调用。因此我会给你一些提示来帮助你找到获得控制的系统调用。



  读源代码。在一个象linux这样的系统中,你可以找到任何一个用户(或者管理员)所用的程序的源代码。一旦你发现了某个基本的函数,像dup,open,write.....转向b
分页:上一页  1 [2] 3 4 5 6 7 8 9 10  下一页  后10页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有