首页
社区
课程
招聘
[原创]扫盲贴,HOOK SSDT 短文一篇。
发表于: 2008-12-6 23:01 27458

[原创]扫盲贴,HOOK SSDT 短文一篇。

2008-12-6 23:01
27458

//author:梧桐
//转载请注明出处

------------------------很不华丽的分割线------------------------------------------------------

本文章仅供那些在驱动开发门外徘徊的程序爱好者参考和学习,大牛就绕过吧,
如有错误的地方,还请多多指出,不胜感激。

------------------------很不华丽的分割线------------------------------------------------------

      对于Driver 一词儿,我想大家都不陌生,它是工作在ring0下的,正是因为如此,它不不能够快速上手的,更多的时候你要熟悉它的技术资料和接口,还要熟悉底层工作的原理,一不小心搞个BSOD,那是会非常郁闷的。

    好了,现在让我们步入正题,首先确认你已经安装好了DDK(学习驱动开发,推荐WINXP DDK 2600、 Windows XP,  VS2003),配置好了你的开发环境(DDK Wizard),在VS20003里添加WINDDK路径。

    打开VS2003,Tools选项,选取 Options(如下图):



    然后,我们找到 Projects(工程),选取VC++ Directories,添加WINDDK路径:


    配置好这些环境以后,我们开始与驱动的亲密接触吧。

    先来建立一个驱动的工程:



    那些默认的选项,全部取消掉:



    接着点 Finish ,删除 Header Files、Resource Files,此时,DDK Wizard 已经为我们建立了一套Driver模板了,但细看,是不是感觉非常非常的乱?

    OK,我们把它K掉,现在我们自己来打造一个简单的入口点。

   

#include "ntddk.h"

//Unload
VOID UnLoad(IN PDRIVER_OBJECT DriverObject)
{
   DbgPrint("UnLoad Driver.\n");
}

//EntryPoint.
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, 
					 IN PUNICODE_STRING RegistryPath)
{
	DriverObject->DriverUnload = UnLoad;
	//TODO
	return STATUS_SUCCESS;
}
typedef struct ServiceDescriptorEntry
{
        unsigned int *ServiceTableBase;
        unsigned int *ServiceCounterTableBase; //Used only in checked build
        unsigned int NumberOfServices;
        unsigned char *ParamTableBase;
} SSDTEntry;
ZwTerminateProcess(
				IN HANDLE ProcessHandle OPTIONAL, 
				IN NTSTATUS ExitStatus
				); 
typedef NTSTATUS(*_ZwTerminateProcess)(
								IN HANDLE ProcessHandle OPTIONAL,
								IN NTSTATUS ExitStatus
								);
#define	GetSystemFunc(FuncName) KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)FuncName+1)]; 
PMDL MDLSystemCall;
PVOID *MappedSCT;

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
  • 1.png (8.77kb,704次下载)
  • 2.png (57.43kb,701次下载)
  • 3.png (16.67kb,698次下载)
  • 4.png (63.83kb,702次下载)
收藏
免费 7
支持
分享
最新回复 (42)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学到了。。很实用。很好的表述。
2008-12-6 23:09
0
雪    币: 561
活跃值: (124)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不太懂收藏了
2008-12-6 23:52
0
雪    币: 360
活跃值: (82)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
赞一个 的确对新人很有帮助
2008-12-7 00:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习了下,不过不太懂,先收藏
2008-12-7 00:11
0
雪    币: 342
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持,可惜当初我学驱动时没有这帖
要是早点出来,我可能节省了很多时间了。
2008-12-7 00:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼主辛苦 文章收藏了
2008-12-7 01:59
0
雪    币: 564
活跃值: (390)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
就冲着你是我大哥的份上,我也要**
2008-12-7 02:08
0
雪    币: 236
活跃值: (13)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
呵呵,自己摸索可以积累很多经验的啊
2008-12-7 18:44
0
雪    币: 83
活跃值: (11)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
LZ在线的吧...我需要和你联系...极需要的那种...可否请你查看一下...邮件...
2008-12-7 19:00
0
雪    币: 280
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
学习了,顶一下
2008-12-7 22:40
0
雪    币: 236
活跃值: (13)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
邮件给您回了,在帖子里这样是被禁止的,下不为例哦~~
2008-12-10 10:24
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
13
lz很强学习了
2008-12-10 10:33
0
雪    币: 194
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持楼主的原创!
2008-12-10 14:06
0
雪    币: 471
活跃值: (4223)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
15
图文并茂,很有帮助
2008-12-11 20:32
0
雪    币: 236
活跃值: (13)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
   感觉这篇好像发错地方了。。
2008-12-14 13:46
0
雪    币: 48
活跃值: (11)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
17
楼主可否给一个最新的DDK下载地址,我用的是VS2005和VS2008
2008-12-15 12:14
0
雪    币: 1259
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
stu
18
做个记号先,以后再看。
2008-12-15 14:43
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
  收藏了,好东西,谢谢LZ!
2008-12-15 18:23
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
很感谢搂主的扫盲帖,但要看懂还是需要一定的基础的
呵呵
2个月钱,让我看我就看不懂
现在重新学习,另有所获,呵呵
2008-12-16 22:14
0
雪    币: 65
活跃值: (811)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
21
这么好的文章,为什么才发现哦~~`
太失败了~~~
2008-12-16 22:19
0
雪    币: 411
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
好贴啊,收藏。
2008-12-17 08:48
0
雪    币: 236
活跃值: (13)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
google搜索一下,还是比较多的。
2008-12-17 15:28
0
雪    币: 376
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
正要学这个,谢谢楼主~
目前正在寻找VS2003下载中。。。

不过楼主的几张图都看不到,可否补一下啊?
2008-12-30 03:25
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
先收藏 学习ing
2008-12-30 14:26
0
游客
登录 | 注册 方可回帖
返回
//