积木首页 | 500多种网页特效 | 函数手册 | 广播电台 | 高清晰图片素材 | 服务器合租 | 万年历 | 网友最新浏览记录
程序开发 网页设计 搜索引擎 特效代码 操作系统 防范病毒 黑客技术 图形图象 电脑硬件 网络技术 服 务 器 数 据 库 网文精粹
您的位置:积木首页 >> 黑客技术频道 >> 黑客编程 >> 正文:
标题:module injection in 2.6 kernel
时间:2005-1-13 来源:不详 浏览数:

文摘出处:http://www.linuxforum.net/forum/showflat.php?Cat=&Board=security&Number=536404&page=0&view=collapsed&sb=5&o=31&fpart=

|=-------------------[ module injection in 2.6 kernel ]-------------------=|
|=------------------------------------------------------------------------=|
|=---------------[ CoolQ  <qufuping@ercist.iscas.ac.cn> ]-----------------=|
|=------------------------------------------------------------------------=|

0 - 前言
1 - 2.4 回顾
2 - 2.6 的变化
    2.1 2.6的.ko文件
    2.2 失效的原因
3 - 对策
    3.1 修改.rel.gnu.linkonce.this_module
    3.2 例子
4 - 检测module injection的方法
5 - 参考
6 - 代码

--[ 0 - 前言

phrack 61期有一篇不错的文章[1],给出了一种感染内核模块的方法,不过是基于2.4
内核的,该方法在2.6上无效,但是思想还是通用的。通过对2.6内核加载的分析,了解
两者之间的差异,并最终实现2.6下的module injection。

--[ 1 - 2.4 回顾

内核对模块的管理,是通过struct module来实现的,该结构的成员init/cleanup,代表
加载/卸载模块后需要运行的初始化/收尾函数,它的赋值是通过以下代码实现的:
module->init = obj_symbol_final_value(f,
                obj_find_symbol(f, "init_module"));
module->cleanup = obj_symbol_final_value(f,
                obj_find_symbol(f, "cleanup_module"));
可见,insmod需要在.strtab中查找init_module/cleanup_module字符串,并根据索引值
找到相应的.symtab中的符号,将相应的值赋值给module->init/cleanup。

因此,如果能把.strtab中别的字符串替换为init_module,那么系统加载的时候,运行的
就不是原来的init_module函数了。

--[ 2 - 2.6 的变化

2.6中的模块子系统被完全重写,如果用[1]中的工具,发现无论怎么修改.strtab,运行
的始终是原来的init_module。

--[ 2.1 2.6的.ko文件

2.6下的模块,扩展名为.ko,而不是2.4下的.o。很多初学者写完模块之后,会使用2.4的
方法来编译模块
-----------------------------8 test.c 8--------------------------------------
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>

static int dummy_init(void)
{
    printk("hello,world.\n");
    return 0;
}
static void dummy_exit(void)
{


(责任编辑:欣欣裴)
关于本站 | 广告服务 | 联系我们 | 版权申明 | 强强联盟 | 投稿热线 | 网站地图 | 申请链接
Copyright ©2005-2006 Gimoo.net All rights reserved. 积木网 版权所有
E-mail:gimoohr@gmail.com 京ICP备05050695号