本文将引领读者打造一个初级的内核级Rootkit,然后为其引入两种简单的隐形技术:进程隐形技术和文件隐形技术。同时,为了让读者获得rootkit编程的相关经验,我们顺便介绍了rootkit的装载、卸载 *** ,以及必不可少的测试技术。
本文介绍的Rootkit的主要构件是一个设备驱动程序,所以我们首先了解一下我们的之一个rootkit。
二、rootkit主体
本节引入一个简单的rootkit实例,它实际上只给出了rootkit的主体框架,换句话说,就是一个设备驱动程序。那么为什么要用设备驱动程序作为主体呢?很明显,因为在系统中,设备驱动程序和操作系统一样,都是程序中的特权阶级——它们运行于Ring0,有权访问系统中的所有代码和数据。还有一点需要说明的是,因为本例主要目的在于介绍rootkit是如何隐形的,所以并没有实现后门之类的具体功能,。
我们将以源代码的形式说明rootkit,对着重介绍一些重要的数据结构和函数。下面,先给出我们用到的之一个文件,它是一个头文件,名为Invisible.h,具体如下所示:
//Invisible.h:我们rootkit的头文件
#ifndef _INVISIBLE_H_
#define _INVISIBLE_H_
typedef BOOLEAN BOOL;
typedef unsigned long DWORD;
typedef DWORD* PDWORD;
typedef unsigned long ULONG;
typedef unsigned short WORD;
typedef unsigned char BYTE;
typedef struct _DRIVER_DATA
{
LIST_ENTRY listEntry;
DWORD unknown1;
DWORD unknown2;
DWORD unknown3;
DWORD unknown4;
DWORD unknown5;
DWORD unknown6;
DWORD unknown7;
UNICODE_STRING path;
UNICODE_STRING name;
} DRIVER_DATA;
#endif
我们知道,应用软件只要简单引用几个文件如stdio.h和windows.h,就能囊括大量的定义。但这种做法到了驱动程序这里就行不通了,原因大致有二条,一是驱动程序体积一般较为紧凑,二是驱动程序用途较为专一,用到的数据类型较少。因此,我们这里给出了一个头文件Invisible.h,其中定义了一些供我们的rootkit之用的数据类型。
这里定义的类型中,有一个数据类型要提一下:双字类型,它实际上是一个无符号长整型。此外,DRIVER_DATA是Windows 操作系统未公开的一个数据结构,其中含有分别指向设备驱动程序目录中上一个和下一个设备驱动程序的指针。而我们这里开发的rootkit恰好就是作为设备驱动程序来实现,所以,只要从设备驱动程序目录中将我们的rootkit(即驱动程序)所对应的目录项去掉,系统管理程序就看不到它了,从而实现了隐形。
紧紧随着时代在进步着,经济在发展着,社会大众有着更多的人选择通过创业来改变生活质量。那该选择什么行业来投资呢?餐饮行业的发展非常繁荣,加盟商把更多目光放在餐饮行业上,而火锅作为传统美食,当然在发展上是...
现在网络上诈骗的行为五花八门,有的人可能会通过网络赌博,有的人可能会通过网络购买彩票,其实不论是哪一种方式,如果是不靠谱的平台,那么势必会被骗,对于这样的情况很多人也想要将自己的钱找回来,这时候就需要...
小编就这一难题做了普遍的调研,我们中国人与欧洲人的回应是截然不同的。实际上,很多日常生活状况和基本常识告知大家,欧洲人在众多价值观念与教学理念上与我们...
互联网交易越来越方便了,但也越来越不方便了,看起来非常方便的互联网,而实际上信任问题也存在很大的弊端,比如说有人用淘宝咋骗、有人用货到付款咋骗等手段,那么就算有这些平台担保,真的靠谱吗,今天我来教教大...
win7系统溃逃了怎么办?最近许多同伙示意遇到了win7系统溃逃的问题,但不知道应该若何处置,那么今日我们一起去学习一下win7系统溃逃的处置操作方法吧,信赖对人人一定会有所辅助的。 wi...
国务院近日印发《关于进一步做好稳就业工作的意见》(以下简称《意见》)。 《意见》就稳就业工作提出了六个方面重点举措。 一是支持企业稳定岗位。将阶段性降低失业保险和工伤保险费率、失业保险稳岗返还及职...