驱动程序处理流程_驱动程序编写基本流程

驱动程序处理流程_驱动程序编写基本流程昨天写了一个类似SC查询驱动服务的信息的程序,发现获取到的路径ImagePath是\??\c:\xxxxx,导致我用CreateFile什么的函数,居然失败!就比较好奇windows是怎么处理驱动服务一类的路径处理

昨天写了一个类似SC查询驱动服务的信息的程序,发现获取到的路径ImagePath是\??\c:\xxxxx,导致我用CreateFile什么的函数,居然失败!就比较好奇windows是怎么处理驱动服务一类的路径处理。我知道windows是在注册表中记录的启动服务信息,直接用注册表打开查看如下:


名称:  reg.JPG查看次数: 311文件大小:  58.7 KB

注意其中的ImagePath,我发现大致有好几种情况:

1、  无ImagePath项

2、  system32\xxxxxxxx

3、  \??\c:\xxxxxx

4、  %SystemRoot%xxxxxx

我想了解的是windows驱动服务是怎么处理这玩意的,既然是驱动最终会调用NtLoadDriver函数

NTSTATUS NtLoadDriver ( __in PUNICODE_STRING DriverServiceName )

直接Windbg启动调试 bp NtLoadDriver

fa06fa2c fa06fa38 80821a99 nt!NtLoadDriver+0x143

fa06fa2c fa06fa38 80821a99 nt!KiFastCallEntry+0xf8

fa06fa2c 815d5828 815b08e8 nt!ZwLoadDriver+0x11

817c7030 815d5770 fa06fab8 NDIS!ndisPnPDispatch+0x3ad

哦,NDIS不错哦,还可以加载驱动,呵呵,相关兴趣的可以IDA研究下,下面是我发现的一些非常规驱动加载列表[2003 server]:

1 “\Registry\Machine\System\CurrentControlSet\Services\Gpc”

fa01fa20 fa01fa3c 80821a99 nt!NtLoadDriver

fa01fa20 fa01fa3c 80821a99 nt!KiFastCallEntry+0xf8

fa01fa20 8142e000 8089547a nt!ZwLoadDriver+0x11

f96454b8 8142e000 8089547a ipsec!GpcInitialize+0x7f

00000000 8081dceb 815142f0 ipsec!IPSecGpcInitialize+0x35

815142f0 e12a75dc 00000000 ipsec!IPSecGeneralInit+0x168

815142f0 81430000 e144aa30 ipsec!DriverEntry+0x104

000000ec 00000001 00000000 nt!IopLoadDriver+0x689

00000000 00043000 00000000 nt!IopInitializeSystemDrivers+0x16d

00000000 00000000 8179d740 nt!IoInitSystem+0x6ad

80087000 fa01fddc 80905b5b nt!Phase1InitializationDiscard+0x9cf

80087000 00000000 00000000 nt!Phase1Initialization+0xd

808c9f21 80087000 00000000 nt!PspSystemThreadStartup+0x2e

00000000 00000000 00000000 nt!KiThreadStartup+0x16

2 “\Registry\Machine\System\CurrentControlSet\Services\WANARP”

f9948bdc f9948bf4 80821a99 nt!NtLoadDriver

f9948bdc f9948bf4 80821a99 nt!KiFastCallEntry+0xf8

f9948bdc 00000000 81503dd0 nt!ZwLoadDriver+0x11

f9948c8c f9948c1c 8160d2dc tcpip!IPBindAdapter+0xf2

80a719b0 80a71988 f99a7534 NDIS!ndisInitializeBinding+0x189

f99a53bc 00000000 81503e60 NDIS!ndisCheckAdapterBindings+0xd9

81503dd0 00000000 81289db0 NDIS!ndisCheckProtocolBindings+0xd2

81503e50 00000000 00000000 NDIS!ndisWorkerThread+0x74

f99a8a41 81503e50 00000000 nt!PspSy今天的文章驱动程序处理流程_驱动程序编写基本流程分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/82471.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注