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

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

2008-12-6 23:01
27703

//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掉,现在我们自己来打造一个简单的入口点。

   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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;
}
1
2
3
4
5
6
7
typedef struct ServiceDescriptorEntry
{
        unsigned int *ServiceTableBase;
        unsigned int *ServiceCounterTableBase; //Used only in checked build
        unsigned int NumberOfServices;
        unsigned char *ParamTableBase;
} SSDTEntry;
1
2
3
4
ZwTerminateProcess(
                IN HANDLE ProcessHandle OPTIONAL,
                IN NTSTATUS ExitStatus
                );
1
2
3
4
typedef NTSTATUS(*_ZwTerminateProcess)(
                                IN HANDLE ProcessHandle OPTIONAL,
                                IN NTSTATUS ExitStatus
                                );
1
#define GetSystemFunc(FuncName) KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)FuncName+1)];
1
PMDL MDLSystemCall;
1
PVOID *MappedSCT;

[注意]看雪招聘,专注安全领域的专业人才平台!

上传的附件:
  • 1.png (8.77kb,704次下载)
  • 2.png (57.43kb,701次下载)
  • 3.png (16.67kb,698次下载)
  • 4.png (63.83kb,702次下载)
收藏
免费 7
支持
分享
赞赏记录
参与人
雪币
留言
时间
Youlor
为你点赞~
2024-1-4 03:42
伟叔叔
为你点赞~
2023-12-6 00:33
QinBeast
为你点赞~
2023-9-14 01:00
PLEBFE
为你点赞~
2023-8-27 00:14
shinratensei
为你点赞~
2023-8-18 00:15
心游尘世外
为你点赞~
2023-8-7 01:13
飘零丶
为你点赞~
2023-7-25 03:53
最新回复 (42)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
学到了。。很实用。很好的表述。
2008-12-6 23:09
0
雪    币: 560
活跃值: (278)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不太懂收藏了
2008-12-6 23:52
0
雪    币: 360
活跃值: (92)
能力值: ( 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
活跃值: (20)
能力值: ( 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
活跃值: (4635)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册