- 摘要:本
文介绍了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)则规定了库文件的默认安装位置。
阅读(549) | 评论(0) | 转发(0) |