一.Windows系统构架
1.先加载内核模式的各种管理服务和子系统,然后再加载用户模式的各种服务。
2.用户模式的程序、服务通过NTDLL.DLL调用内核模式的各种系统功能
3.硬件抽象层(HAL.DLL)提供了Windows系统对底层硬件统一、透明的访问
二。重要术语和注意事项
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服务程序
启动完成!