Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1099535
  • 博文数量: 414
  • 博客积分: 10030
  • 博客等级: 上将
  • 技术积分: 4440
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 21:42
文章分类

全部博文(414)

文章存档

2011年(1)

2009年(1)

2008年(412)

我的朋友

分类: 网络与安全

2008-10-11 17:20:59

  • 摘要:本 文介绍了Windows下的内核级Rootkit的最基础性的东西,以及利用驱动程序将代码导入到内核的方法。虽然我们还没有涉及到真正的 Rootkit,但这些内容是我们掌握Rootkit的必经之路,就像我们要建一座6层的楼房,却不能撇开基础和低层而直接盖第六层一样!更多的内容,会 在后续的文章中陆续介绍。
  • 标签:Rootkit技术


2. SOURCES文件
要想构建设备驱动程序,仅有驱动程序源文件还是不够的,我们还需另外两个文件:SOURCES和MAKEFILE文件。
我们先来介绍SOURCES文件,此文件的名称必须使用大写字母,并且不带任何扩展名,它的内容应当包含:
TARGETNAME=MYDRIVER
TARGETPATH=OBJ
TARGETTYPE=DRIVER
SOURCES=mydriver.c
其 中,第一个变量TARGETNAME的作用是为我们的驱动程序命名。在本例中,我们的设备驱动程序在编译后被命名为MYDRIVER。需要注意的是,变量 TARGETNAME指定的名称会被嵌入到二进制代码之中,所以在写Rootkit时,千万不要用该变量为其指定容易被人猜中的名称。即使把二进制文件本 身改名,但其内部的名字是无法改变的。最好用一些迷惑性较强的名称来为这些Rootkit命名,方法是根据系统中已有的驱动程序名,在此基础上少做手脚, 一个上佳的Rootkit名便诞生了。
第二个变量TARGETPATH的作用是指定驱动程序编译后的存放位置,该变量通常设为OBJ。一般来说, 驱动程序文件被放在目录objchk_xxx/i386下面,例如本文驱动程序,作者在Windows XP下构建后的文件将位于C:\myrootkit\objchk_wxp_x86\i386。
第三个变量TARGETTYPE用来指定要编译的文件类型。对于设备驱动程序,该变量设为DRIVER。
第四个变量SOURCES用来指定源文件。该变量可以指定多个源文件,这时每行一个文件,并且除最后一行外,在每行末尾都要放上一个反斜杠,如下例所示:
SOURCES=  myfile1.c \
myfile2.c \
myfile3.c    /*注意,最后一行没有反斜杠*/
除了上面几个必选的变量外,还有一些可选变量。变量INCLUDES便是可选变量之一,它用以规定寻找包含文件的目录。现举例说明:
NCLUDES = c:\my_includes \
..\..\inc \
c:\other_includes
如果需要链接库的话,我们还需要变量TARGETLIBS。例如,有时我们要用到NDIS库,这时在SOURCES文件就应当包含如下一行:
TARGETLIBS=$(BASEDIR)\lib\w2k\i386\ndis.lib
或者:
TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib
当然,ndis.lib在你自己系统上的位置可能有所不同,你可以根据实际情况将上面的路径加以调整。其中,变量$(BASEDIR)规定DDK的安装目录$(DDK_LIB_PATH);变量$(DDK_LIB_PATH)则规定了库文件的默认安装位置。
阅读(519) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~