=-|================================================-{ www.enye-sec.org }-====|
=-[ LKM Rootkits on Linux x86 v2.6 ]-========================================|
=-|==========================================================================|
=-[ por RaiSe <raise@enye-sec.org> ]-========================-[ 26/09/2005]-=|
=-[ 译者:王耀 <wangyao at cs.hit.edu.cn> ]-======================-[ 24/02/2008]-=|
注:原文是西班牙文,所以翻译比较吃力,所以有些地方是我按照自己理解来翻译的。
原文:http://www.enye-sec.org/textos/lkm.rootkits.en.linux.x86.v2.6.txt
编译内核模块的方法与编译一般应用程序的方法略有不同. 我们会发现在内核源码树的层层目录中, 都存在有Makefile. 即这些Makefile是分层次组织的. 以往的内核版本中, 编译模块比较麻烦, 需要我们对这些Makefile做出许多更改. 2.6的内核采用了"kbuild"编译系统, 简化了这些问题. 关于kbuild, 可参考内核源码树中的 /Documentation/kbuild/modules.txt.
To be frank you do not need a new full source tree in order to just compile or build module against the running kernel i.e an exploded source tree is not required to build kernel driver or module. The instruction outlined below will benefit immensely to a developers/power users.
2.4内核下,执行“cat /proc/ksyms”,将会看到内核符号,而且在名字后还会跟随着一串校验字符串,此校验字符串与内核版本有关。在内核源码头文件linux/modules目录下存在许多*.ver文件,这些文件起着为内核符号添加校验后缀的作用,如ksyms.ver文件里有一行#define printk _set_ver(printk),linux/modversions.h 文件会包含所有的.ver文件。所以当模块包含linux/modversions.h文件后,编译时,模块里使用的内核符号实质上成为带有校验后缀的内核符号。在加载模块时,如果模块使用的内核符号的校验字符串与当前运行内核所导出的相应的内核符号的校验字符串不一致,即当前内核空间并不存在模块所使用的内核符号,就会出现“Invalid module format ”的错误。
一、Usplash画面(开机/启动画面)
它就相当于Windows的开机/启动画面,因为 ubuntu 使用usplash这个软件作为启动画面,所以我们就叫它为Usplash画面。
修改这个画面是3个中难度最高的,如果使用Splashy的话就要简单多了。默认的启动画面在这里/usr/lib/usplash/usplash-default.so,它是一个编译好的.so文件,所以不能直接修改。制作方法见这里,以下是替换Usplash画面的方法。
getopt()
是一个专门设计来减轻命令行处理负担的库函数。 我们可以使用strftime()函数将时间格式化为我们想要的格式。它的原型如下:
size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);
我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。
作者:金步国
概述
内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。内核源码树下的 Documentation/kernel-parameters.txt 文件列出了所有可用的引导参数,并指明了处理每个参数的具体文件。注意:对于模块而言,引导参数只能用于直接编译到核心里的模块,格式是使用"模块名.参数=值"模式指定,比如:usbcore.blinkenlights=1 。动态加载的模块可以在 modprobe 命令行上指定相应的参数值,比如:modprobe usbcore blinkenlights=1 。
可以使用"modinfo -p ${modulename}"命令显示可加载模块的所有可用参数。已经加载到内核中的模块会在 /sys/module/${modulename}/parameters/ 中显示出其参数,并且某些参数的值还可以在运行时通过"echo -n ${value} > /sys/module/${modulename}/parameters/${parm}"命令修改。
与Windows 相比,Linux被认为具有更好的安全性和其他扩展性能。这些特性使得Linux在操作系统领域异军突起,得到越来越多的重视。随着Linux应用量的增加,其安全性也逐渐受到了公众甚或黑客的关注。那么,Linux是否真的如其支持厂商们所宣称的那样安全呢?本期我们请到了启明星辰信息技术有限公司积极防御实验室工程师赵伟,对Linux进行专业的漏洞技术分析。
原来架设LAMP,需要apt安装很多包,记住那些包的名字是一件非常痛苦的事情,这里介绍另外一个简单方便的方法,使用tasksel安装LAMP套件。
先说说什么是Tasksel,它是一个Debian下的安装任务套件,如果你为了使你的系统完成某一种常规功能,而需要安装多个软件包时,我们就可以使用它了。这句话是什么意思呢?比如说,我们需要安装LAMP架设一个web服务器,为了完成这个功能,我们一般需要安装很多个软件包,用apt的话,我们就需要分别安装这些包(包含apache2、php5等等),以便构成一个完整的(符合我们要求的)LAMP系统。而如果使用tasksel的话,就可以用它方便的给我们安装一个完整的LAMP套件,而无须我们去关心具体需要由哪些包来构成这个统一的套件。在这里,LAMP是一个例子,象gnome-desktop等也同理。
Host by is-Programmer.com | Power by Chito 1.3.3 beta