深入底层 评估Vista系统内核模式安全性( 五 )


Windowssystem32NTOSKRNL.exe
Windowssystem32HAL.dll
Windowssystem32PSHED.dll
Windowssystem32BOOTVID.dll
Windowssystem32CLFS.SYS
Windowssystem32CI.dll
接下来使用OslHiveFindDrivers查找所有的boot drivers,并且根据组(which is ordered according to HKEY_LOCAL_MacHINECurrentControlSetControlGroupOrderList)和标记(an integer which determines each driver’s order within its respective group)对他们进行分类 。这个分类好的boot drivers列表通过OslLoadDrivers进行加载 。OslLoadDrivers为列表中的每个驱动调用LoadImageEx 。LoadImageEx将会加载每个驱动及相关信息 。
此时,剩余的boot drivers也被加载和初始化 。列表如下(按照年月日排列,64位Vista):
1.;Windowssystem32driversWdf01000.sys
2.;Windowssystem32driversWDFLDR.SYS
3.;Windowssystem32driversacpi.sys
4.;Windowssystem32driversWMILIB.SYS
5.;Windowssystem32driversmsisadrv.sys
6.;Windowssystem32driverspci.sys
7.;Windowssystem32driversvolmgr.sys
8.;Windowssystem32driversisapnp.sys
9.;Windowssystem32driversmpio.sys
10.;Windowssystem32driverscompbatt.sys
11.;Windowssystem32driversBATTC.SYS
12.;WindowsSystem32driversmountmgr.sys
13.;Windowssystem32driversintelide.sys
14.;Windowssystem32driversPCIIDEX.SYS
15.;Windowssystem32driverspcmcia.sys
16.;Windowssystem32driversaliide.sys
17.;Windowssystem32driversamdide.sys
18.;Windowssystem32driverscmdide.sys
19.;Windowssystem32driversmsdsm.sys
20.;Windowssystem32driverspciide.sys
21.;Windowssystem32driversviaide.sys
22.;WindowsSystem32driversvolmgrx.sys
23.;Windowssystem32driversatapi.sys
24.;Windowssystem32driversataport.SYS
25.;Windowssystem32drivershpcisss.sys
26.;Windowssystem32driversstorport.sys
27.;Windowssystem32driversadp94xx.sys
28.;Windowssystem32driversadpu160m.sys
29.;Windowssystem32driversSCSIPORT.SYS
30.;Windowssystem32driversadpu320.sys
31.;Windowssystem32driversdjsvs.sys
32.;Windowssystem32driversarc.sys
33.;Windowssystem32driversarcsas.sys
34.;Windowssystem32driverselxstor.sys
35.;Windowssystem32driversi2omp.sys
36.;Windowssystem32driversiirsp.sys
37.;Windowssystem32driversiteraid.sys
38.;Windowssystem32driverslsi_fc.sys
39.;Windowssystem32driverslsi_sas.sys
40.;Windowssystem32driverslsi_scsi.sys
41.;Windowssystem32driversmegasas.sys
42.;Windowssystem32driversmraid35x.sys
43.;Windowssystem32driversmsahci.sys
44.;Windowssystem32driversnfrd960.sys
45.;Windowssystem32driversql2300.sys
46.;Windowssystem32driversql40xx.sys
47.;Windowssystem32driverssisraid2.sys
48.;Windowssystem32driverssisraid4.sys
49.;Windowssystem32driverssymc8xx.sys
50.;Windowssystem32driverssym_hi.sys
51.;Windowssystem32driverssym_u3.sys
52.;Windowssystem32driversvsmraid.sys
53.;Windowssystem32driversfltmgr.sys
54.;Windowssystem32driversfileinfo.sys
55.;Windowssystem32driversndis.sys
56.;Windowssystem32driversmsrpc.sys
57.;Windowssystem32driversNETIO.SYS
58.;WindowsSystem32DriversNtfs.sys
此时,所有的boot drivers被加载 。接下来,调用OslpLoadNlsData从注册表项HKEY_LOCAL_MACHINECurrentControlSetControlNLS加载操作系统的语言版本 。最后调用OslpLoadAllModules做了下面的几个事情:
1. 显示Vista启动过程中的进度条 。
2. 加载%SystemRoot%AppPatchdrvmain.sdb(the application compatability database)
3. 加载%SystemRoot%System32acpitabl.dat
4. 加载HKEY_LOCAL_MACHINECurrentControlSetControlErrataInfName注册表项的INF文件 。
在OslpLoadAllModules结束后,OslMain保存启动日志(OslpLogSaveInformation),如果FVE(Full Volume Encryption)选项开启,结束FVE的加载(BlFveSecureBootRestrictToOne and BlTpmShutdown) 。最后,调用OslArchTransferToKernel把控制权转交给NTOSKRNL.EXE 。
Vista Windows系统内核
Vista使用了与先前版本一样的惯例 。64位Vista会在%SystemRoot%System32ntoskrnl.exe查找NTOSKRNL.EXE,在本章节的剩余部分,会引用ntoskrnl.exe在开始入口点的操作指令(KiSystemStartup) 。

推荐阅读