Username: Password:

Linux 可卸载内核模块完全指南之十四
来源: ChinaUnix博客  作者: 发布时间:2007-01-01 11:36:00

the definitive guide for hackers, virus coders and system administrators
(作者:pragmatic/THC,(版本1.0) 2000年05月16日 17:03)
第五部分 最近的一些东西:2.2.x版本的内核
5.1 对于LKM作者来说,一些主要的不同点
Linux有了一个新的主版本:2.2在LKM编程上,他带给我们一些小的改变。这一部分将会帮助您适应这些变化,并且列出了大的一些变化。[注意:关于新的版本的内核,会有另一个发布版本]
我会向您介绍一些新的宏和函数来帮助您研发2.2版本的内核的LKM。要获得每一个确切的变化能够看新的头文档linux/module.h。这个文档在2.1.18版本的内核中被完全的重写了。首先让我们来看看一些能够帮助我们更方便的处理系统调用表的宏:
宏描述
EXPORT_NO_SYMBOLS:这一个相当于旧版本内核的register_symtab(NULL)
EXPORT_SYMTAB:假如您想输出一些符号的话,必须在linux/module.h前面定义这个宏
EXPORT_SYMBOL(name):输出名字叫’name’的宏
EXPORT_SYMBOL_NOVERS(name):没有版本信息的输出符号
用户空间的存取函数也有很大的变化。因此我会在这里列出来(只要包含asm/uaccess.h来使用他们):
函数描述
int access_ok (int type, unsigned long addr, unsigned long size);
这个函数检查是否当前进程允许存取某个地址
unsigned long copy_from_user (unsigned long to, unsigned long from, unsigned long len);
这个是新的memcpy_tofs函数
unsigned long copy_to_user (unsigned long to, unsigned long from, unsigned long len);
这是相对应的copy_from_user(...)
您没有必要使用access_ok(...),因为上面列出的函数都自己检查这个。更有许多不相同的地方,但是您能够看看linux/module.h来获得一个周详的列表。
我最后想提一件事情。我写了很多关于内核守护进程(kerneld)的东西。2.2版的内核不会再使用kerneld了。他使用另外一种方法来实现内核空间的request_module(...)函数-叫做kmod。kmod完全是运行在内核空间的(不再IPC到用户空间了)。对于LKM程式员来说,没有什么大的变化。您还是能够使用request_module(...)来加载模块。因此LKM传染者还是能够在2.2的内核中使用。
我很抱歉关于2.2内核只有这么少的东西。但是现在我正在写一个关于2.2内核安全的论文(特别是LKM的)。因此请注意新的THC发布的论文。我甚至计划工作在一些BSD系统上(FreeBSD,OpenBSD,例如)但是这会发几个月的时间。
第六部分 最后的话
6.1 LKM传奇连同怎样使得一个系统即好用又安全
您大概会感到奇怪,既然LKM这么的不安全,那么为什么要使用他们呢。最初LKM是被设计使得用户更为方便的。Linux和Microsoft相对立,因此研发者们需要一个使得老的Unxi系统更为吸引人和容易的方法。他们实现了KDE和其他很好的东西。比如说,kerneld就是被用来使得模块处理更为容易的。但是要记住,越为简单和自动化的系统就会有越多的安全问题。不可能同时使得一个系统既让用户感到很方便又有足够的安全性。模块就是个很好的这样的例子。
Microsoft给了我们另外一个例子:考虑ActiveX,他(大概)是个好主意,用一个安全的设计来确保一切都是简单的。
因此,亲爱的Linux研发者们;请谨慎了,不要犯Microsoft的错误。不要创建一个好用,但是不安全的OS。把安全时刻记在心中!!!
这篇文章也很清楚的说明了任何系统的内核必须用最好的方法进行保护。不能让一个入侵者更改您系统中最为重要的部分。我把这个任务留给任何系统的设计者。:)
6.2 一些资源链接
下面是一些有用的关于LKM的链接(不但仅是hack和安全相关的)
[网络]
http://www.linuxhq.com
http://www.linuxlinks.com
http://www.linux.org
http://www.lwn.net
http://www.phrack.com
http://www.rootshell.com
http://www.geek-girl.com/bugtraq/
http://hispahack.ccc.de
http://r3wt.base.org
http://www.antisearch.com
http://www.kernel.org
[书]
Linux-Kernel-Programming (Addison Wesley)
Linux Device Drivers (O’Reilly)
[声明]
感谢下面的朋友:
plaguez, Solar Designer, halflife, Michal Zalewski, Runar Jensen, Aleph1, Stealthf0rk/SVAT, FLoW/HISPAHACK, route, Andrew Tridgell, Silvio Cesare, daemon9, Nergal, van Hauser (为我找到了很多错误) and 更有那些无名的向我提过许多一件的个人(有太多了)!
问候
groups : THC, deep, ech0, ADM, =phake=
个人:
van Hauser - 感谢他给了我学习的机会
mindmaniac - 感谢他给我介绍了’第一次亲密接触’
后台音乐支持(帮助我集中精力写作)
Neuroactive, Image Transmission, Panic on the Titanic, Dracul


喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅