Windows驱动的加载顺序

在这里插入图片描述
开机内核初始化后,加载顺序前10榜没几个是看起来正常的驱动。是因为这些看起来.dll后缀的驱动比较底层,甚至虚拟机都没有办法模拟,所以比较特别。在这里插入图片描述
Windows驱动分为Boot Start、System Start、AutoStart和Demand Start四种启动类型,分别代表驱动注册表中Start键值的0\1\2\3,驱动加载时优先加载Boot Start型驱动,按照0、1、2、3类驱动启动类型来加载驱动。优先加载的驱动优先获得到更早的权限,拿到主机的权限。
2017年出现的Rootkit狼人杀就把自己注册成为Boot启动类型的驱动,从而与杀软的最早驱动(一般杀毒软件都有十几个驱动)争夺开机最先掌握主机的权限。
在这里插入图片描述
如果驱动的启动类型是一样的话,就会去比较驱动所在群组的优先级,如图Boot Bus Extednder是一种系统自带的优先级比较高的群组。最后驱动的群组甚至都是一样的,就会比较驱动的Tag值。
所以总体驱动加载顺序是按照 启动类型——群组GroupList——Tag值 的顺序进行比较的。
在这里插入图片描述
Group所在的注册表项HKLM\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List
可以通过修改此处的顺序值决定群组加载的顺序。
在这里插入图片描述
驱动被加载到系统后,在没有关机重启前,它的加载顺序都是比较低的。聪明的驱动程序都会在环3注册时表现平平,然而关机几秒前完成自己驱动加载顺序的提升。从而系统启动时要么把别人弄死,要么放弃启动。
在这里插入图片描述 一个实操小技巧,系统启动时,如果说需要加载的驱动回调函数较多的话,可能会在这个界面停留时间长一点。当开机时在这个界面停留了比较长的时间,要注意最近是不是有下载不干净的东西。