一.Windows系统构架

1.先加载内核模式的各种管理服务和子系统,然后再加载用户模式的各种服务。

2.用户模式的程序、服务通过NTDLL.DLL调用内核模式的各种系统功能

3.硬件抽象层(HAL.DLL)提供了Windows系统对底层硬件统一、透明的访问


 

启动管理器和bios windows启动管理器跟bios_system

 

启动管理器和bios windows启动管理器跟bios_windows_02

 


二。重要术语和注意事项


1.系统卷(System Volume):


包含了如下重要文件的磁盘分区:


  • Master Boot Record(MBR)
  • Boot sector
  • NTLDR
  • Boot.ini
  • SCSI driver-Ntbootdd.sys

 


2.启动卷(Boot Volume)


包含系统文件的分区(%systemRoot%),包含Ntoskrnl.exe,Hal.dll等重要文件


 


三。Windows启动过程




 


1.开机,系统加电


2.BIOS自检


表象:显示器上依次显示显卡信息(如果为非内置),主板Logo,主机详细硬件配置信息(IDE设备、中断资源分配信息等)


3.BIOS读取MBR(固定地址)


 MBR中包含分区表


4.在MBR中寻找第一个被标识为活动的分区(系统卷)


 


注:BISO中的引导信息和MBR中的内容都是在安装操作系统时进行的。


 


5.MBR通过磁盘读取方式加载NTLDR(NT Loder)


6.BIOS将控制权交给NTLDR


表象:显示器显示黑屏


7.NTLDR进行了如下操作:


  • 将系统从16位模式切换到32位模式
  • 开启(内存)分页管理
  • 如果启动卷为SCSI磁盘,从系统卷上读取Ntbootdd.sys对SCSI磁盘进行I/O操作、检测
  • 查找启动卷中是否包含有效的Hiberfil.sys文件,如果有效,跳过如下步骤,直接读取Hiberfil.sys中的信息到内存中,是系统恢复到休眠前的状态

表象:显示器显示系统(从休眠状态)重新启动状态条


 


  • 读取并且分析boot.ini文件,如果boot.ini中存在多个条目(并且在windwos中设置了开机显示启动列表),则显示启动列表。表象:显示器上显示多启动选择列表

 


8.如果选择了启动DOS:加载BOOTSECT.DOS文件供DOS引导


   如果选择启动64为操作系统,NTLDR将CUP周期切换到64位


 


9.如果用户在此时按了F8键,将出现高级启动选项列表。


表象:显示器上显示高级启动选项列表(安全模式、命令行模式、最后一次正确配置等等)


10.NTLDR调用Ntdetect.com进行硬件和BIOS信息的检测(将结果保存到HKLM/Hardware/Description)


11.NTLDR加载注册表System hive文件,根据HKML/System指定的驱动程序(*.sys)拷贝到内存中


12.NTLDR加载Ntoskrnl.exe文件


13.NTLDR加载Hal.dll文件


14.NTLDR将其从boot.ini中读取的各种参数(包含用户按F8后进行的选择),传递给Ntoskrnl.exe,将控制权转给Ntoskrnl.exe的入口函数


 


表象:显示器上显示Windows启动Logo及加载滚动条


15.Ntoskrnl.exe通过两个阶段完成内核子系统的初始化


第一阶段完成对象定义(process,thread,driver等)和核心数据初始化


第二阶段完成对象初始化和子系统的启动


16.Ntoskrnl.exe调用I/O Manager按顺序加载"boot-start"驱动程序和"system-start"驱动程序


17.Ntskrnl.exe创建会话管理器(Session Manager)


(/Windows/System32/Smss.exe)(这是windows创建的第一个进程,处于用户态)


 


P.S . 驱动程序的加载顺序


1.所有驱动程序的信息都被保存到了注册表(HKLM/System/CurrentControlSet/Services)中


2.加载类型(Type键值标识)有:1 for driver, 2 for file system driver, others are Win32 services


3.启动方式(Start键值标识)有:0=boot, 1=system, 2=auto, 3=manual, 4=disabled


注:可以使用driverquery命令查看驱动的加载信息


 


 


18.Smss.exe进行如下操作:


  •  运行BootExecute中指定的程序,如autuchk,chkdsk等
  • 处理"Delaved move/rename"命令(安装补丁重启后根据记录移动或重命名相应的文件)
  • 初始化分页文件和其余注册表项
  • 加载并且初始化内核模式中的Win32子系统(Win32k.sys)
  • 启动Csrss.exe(Win32子系统在用户模式下的部分)
  • 启动Winlogon.exe(准备登录)

 


表象:显示器上显示登录窗口


19.Winlogon.exe进行如下操作:


  • 启动LSASS(安全管理)
  • 启动GINA并等待用户登录(登录框):默认的GINA是Msgina.dll,可自行开发GINA来实现基于生物信息的用户登录(指纹识别等)
  • 启动Services.exe(后台服务管理器)

20.Services.exe启动所有标识为自动启动的Win32服务程序


 


启动完成!