首页
社区
课程
招聘
[求助]新手必看好书Rootkits Subverting the Windows Kernel
发表于: 2007-4-14 10:57 24838

[求助]新手必看好书Rootkits Subverting the Windows Kernel

2007-4-14 10:57
24838
收藏
免费 0
支持
分享
最新回复 (44)
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
2
下了以后看。
2007-4-14 12:30
0
雪    币: 293
活跃值: (110)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
3
严重推荐!
哪位英文强的 把它翻译过来就更好
2007-4-14 13:32
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
下载出现乱码。
2007-4-14 15:50
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
ftp里面有的,我打印出来了
2007-4-14 16:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
下是下了,洋文没一句看得明?
2007-4-14 22:41
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
1.1 内核驱动入口
Windows设备驱动,必须在入口点注册一个回调函数像下面一样

NTSTATUS DriverEntry( ... )
{
     theDriver->DriverUnload = MyCleanupRoutine;
}
  
NTSTATUS MyCleanupRoutine()
{
    ........
}
cleanup routine不是必须存在的,在windows设备驱动中这个是可选的。当你想卸载一个驱动的时候才需要cleanup routine。
在大部分情况下rootkit会驻留在系统中而不需要写在的。但是在你开发驱动的时候你需要有一个卸载函数来帮助你测试。

///////////////////////////////////////////////////////////////////////////////////////////////////

1.2 Hello World!

这个例子可能是xp和2000下最简单的驱动了,:-)

#include "ntddk.h"
NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistryPath )
{
   DbgPrint("Hello World!");
   return STATUS_SUCCESS;
}
/*———————————————————————————————–*/

编译需求:
Driver Development Kit (DDK).
www.microsoft.com/ddk/
ddk有很多种,选择Windows 2003 DDK你可以用它编译适合在Windows 2000, XP,和 2003 的驱动

/*———————————————————————————————–*/
编译环境:
ddk提供两种不同的编译环境:checked和free。checked-build包含debug信息在你的驱动中,这个版本的驱动比free-build 驱动大很多。
只有当你要发布版本的时候再使用free-build编译。

/*———————————————————————————————–*/

驱动文件应用c来写。文件后缀名为.c

/*———————————————————————————————–*/

SOURCES文件
SOURCES文件名必须大写,文件没有后缀,文件内容必须包含以下内容

TARGETNAME=MYDRIVER
TARGETPATH=OBJ
TARGETTYPE=DRIVER
SOURCES=mydriver.c
TARGETNAME变量控制你的驱动名字,一旦起了这个名字他将嵌入在你的二进制文件当中,所以用MY_EVIL_ROOTKIT_IS_GONNA_GET_YOU
这种名字并不是一个好主意,即便是你后来重命名该文件,这个字符串还是嵌入在二进制文件当中而且还不被发现。
起一些看起来合法的名字是一个不错的选择,例如:MSDIRECTX, MSVID_H424, IDE_HD41, SOUNDMGR, and H323FON
你可以从已经被加载的其他驱动名称中得到一些不错想法^_^

TARGETPATH 变量用来设置OBJ。他控制文件被编译到哪里,通常你的驱动文件会在当前目录的objchk_xxx/i386子目录下面。
TARGETTYPE 变量控制你的编译文件类型,创建驱动的话我们使用DRIVER
在SOURCES 这一行是一个已存在的.c文件。如果你想输入多行的话你需要使用”\”符号在每行的后面。
像这样:

SOURCES=  myfile1.c \
         myfile2.c \
         myfile3.c
最后一行没有”\”
可选项INCLUDES,你可以添加INCLUDES变量,他来指定多个目录来定位那些你需要引用的文件,例如:

INCLUDES=   c:\my_includes \
            ..\..\inc \
            c:\other_includes
注:DDK也可以创建可执行程序,只要把TARGETTYPE设置成PROGRAM。当然还有其他的类型EXPORT_DRIVER、DRIVER_LIBRARY和DYNLINK.
如果有其他的库需要连接进来的你需要添加一个TARGETLIBS变量。
比如说我们需要使用NDIS的库就必须这样:

TARGETLIBS=$(BASEDIR)\lib\w2k\i386\ndis.lib
或者

TARGETLIBS=$(DDK_LIB_PATH)\ndis.lib
这里你需要给出ndis.lib的路径。$(BASEDIR)这个变量值得是你DDK的安装目录;$(DDK_LIB_PATH)指的是默认的库文件安装目录,这些路径依赖于你系统当中DDK的安装路径。

/*———————————————————————————————–*/

MAKEFILE文件
最后我们创建一个命名为MAKEFILE的文件,这个文件名也是全部大写而且没有后缀。内容如下:

!INCLUDE $(NTMAKEENV)\makefile.def
/*———————————————————————————————–*/

运行Build程序
现在我们有MAKEFILE,SOURCES,和.c文件,现在需要运行DDK的checked-build编译环境。从开始菜单–程序–找到winddk的目录
在命令行切换到你的驱动目录。输入“build”。没有任何错误的话,你将得到你的第一个驱动^_^。
注:去抱你的目录不包含空格。例如C:\myrootkit。
你可以找到一个完整的驱动例子

www.rootkit.com/vault/hoglund/basic_1.zip
/*———————————————————————————————–*/

卸载函数
当你创建一个驱动是,theDriverObject是驱动main函数的一个参数。这个指针指向一个包含函数指针的数据结构。其中有一个函数指针叫“unload routine”。如果你设置了卸载函数,这意味着驱动可以从内存中卸载。如果你没有这只这个指针,驱动被加载后将无法卸载直到你重启才能将这个驱动从内存中移除。
在我们的开发过程中我们将load和unload驱动很多次用于我们调试。所以必须设置一个写在函数方便我们调试。
下面是一个卸载的例子:

// BASIC DEVICE DRIVER
#include "ntddk.h"
// This is our unload function
VOID OnUnload( IN PDRIVER_OBJECT DriverObject )
{
      DbgPrint("OnUnload called\n");
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,IN PUNICODE_STRING theRegistryPath)
{
      DbgPrint("I loaded!");
      // 在DriverObject中初始化卸载函数指针
      theDriverObject->DriverUnload  = OnUnload;
      return STATUS_SUCCESS;
}
这样我们就可以不用重启电脑卸载这个驱动。

/*———————————————————————————————–*/
加载和卸载驱动
加载和卸载驱动是非常容易的,我们只需要下载一个工具
InstDrv
www.rootkit.com/vault/hoglund/InstDvr.zip
当然当你的驱动在使用的时候你必须写一段代码来加载和卸载驱动,这个工具只是方便你的开发

/*———————————————————————————————–*/
记录debug指令

工具Debug View www.sysinternals.com
用来记录代码当中调用debug指令的信息。
DbgPrint(”some string”);
来记录你的代码执行情况。

/*———————————————————————————————–*/

WiNrOOt
2:17 2007-2-4
2007-4-15 17:02
0
雪    币: 220
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
ms不错,收藏了
2007-4-15 18:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
在很多地方看到提到这本书,多谢分享。
这本书的引言其中有三章是取自中国的《道德经》和《孙子兵法》,真是有意思啊。

Chapter 1. Leave No Trace

Subtle and insubstantial, the expert leaves no trace; divinely mysterious, he is inaudible. Thus he is the master of his enemy's fate.

—SUN TZU

《孙子兵法》:微乎微乎,至于无形;神乎神乎,至于无声,故能为敌之司命。

Chapter 4. The Age-Old Art of Hooking
How does the sea become the king of all streams? Because it lies lower than they! Hence it is the king of all streams.

—LAO TZU

《道德经》:江海之所以能为百谷王者,以其善下之,故能为百谷王。

Chapter 7. Direct Kernel Object Manipulation
Generally in war the best policy is to take a state intact; to ruin it is inferior to this.

—SUN TZU

《孙子兵法》:夫用兵之法,全国为上,破国次之……
2007-5-8 00:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢楼主了,收藏,学习中!
2007-5-8 01:12
0
雪    币: 148
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢楼主分享,下载以后再看。
2007-5-8 01:27
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
听别人极力推荐的一本书,谢谢啦
2007-6-29 22:47
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
13
中文版已经出了~~
2007-6-30 12:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
新手来报到,学习一下。
2007-6-30 19:49
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
好东西啊,就是要学习!
2007-7-2 02:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
新手看的?我晕。。我连新新手都算不上。。
2007-7-2 07:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
英语的,没时间看。
2007-7-2 08:39
0
雪    币: 1969
活跃值: (46)
能力值: (RANK:550 )
在线值:
发帖
回帖
粉丝
18
好东西,己收藏
2007-7-2 09:03
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
19
看中文版不如看英文的简单
2007-9-3 11:09
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢。现在想找找有没有其中文版或者有几乎同样影响力的同类中文书籍。看E文比较慢。
2007-9-24 16:50
0
雪    币: 202
活跃值: (146)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
我下了,所以要回帖:-)
2008-3-20 12:56
0
雪    币: 217
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
E文烂了点,谢谢楼主分享精神!
2008-3-20 13:57
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
下载了,慢慢消化啦
2008-7-23 08:13
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
很不错,谢谢分享
2008-7-23 08:23
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
谢谢,收藏了..
2008-7-23 08:29
0
游客
登录 | 注册 方可回帖
返回
//