这篇文章是摘抄自《非安全黑客手册上的》,感觉对自己挺有用就抄下来了,文章版权属于原作者。

一、自检和初始化部分

1.加电自检(Powser On Self Test,Post),cpu复位

   功能是检测电脑是否良好,通常完整的post自检包括对Cpu、640K基本内存、1M以上的扩展内存、ROM、主板、CMOS存储器、显示卡、软硬盘子系统、各种插接口(串口、并口、USB口)和输入设备进行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告。对于严重错误,计算机将不给出任何提示或信号

2.BIOS部分
  系统初始化包括创建中断向量、设置寄存器、对一些外设进行初始化和检测,其中很重要的部分就是BIOS设置,主要是对硬件设置一些参数,电脑自动启动时会读取这些参数,并与实际硬件设置比较,如果不符合,会影响到系统的启动。
  引导程序,功能是引导windows或其他操纵系统,BIOS先从软盘或硬盘的开始扇区读取主引导记录即MBR,若没有找到,则会在显示器上显示没有引导设置;若找到,则会把电脑的控制权交给主引导记录,由主引导记录找到分区引导记录,再由分区引导记录把操纵系统装入电脑,BIOS这部分任务就完成了,(提示:EFI是可扩展固件接口的简称)

二、BIOS到操作系统的过度部分

1.MBR(Master boot recorder, 主引导记录)

     MBR存在于硬盘0磁道的第一个扇区,大小为512字节,而这个区域可以分为三个部分,第一个部分为pre-boot区(预启动区),占446字节,第二部分是partition table区(分区表DPT), 占66个字节,该区相当于一个小程序,作用是判断哪个分区被标记为活动分区,然后去读取那个分区的启动区,并运行该区中的代码;第三部分是结束代码即55AA。(主引导区中,从地址BE开始到FD结束为止的64个字节中的内容就是分区表,分区表以80H或00H为开始标志以55AAH为结束标记,每个分区占用16个字节,最多可以4个主分区)
  值得注意的是,MBR是由分区程序(如DOS的Fdisk.exe)产生的,它也并不是以文件的形式存在的,而是由BIOS通过磁盘的定位来完成读写操作的。实现的功能就一个:使其中的一个活动分区获得控制群,正常启动系统。
  MBR不会随着操作系统的不同而不动、不会夹带操作系统的性质,是有公共性质的。实际他是让BIOS过度到操作系统的中间部分。 如果是EFI方式,他会加载BOOTMGR,然后进行相应的启动。

三、操作系统部分(windows

1.  Boot sector(分区引导记录)

  在上面对MBR的介绍我们知道,通过引导程序代码可以找到分区表中的活动分区的引导记录,然后将控制权交给他,boot sector是活动分区的引导记录,存在于活动分区开始的第一个扇区,也不是以文件形式存在的,是由MBR中的第一部分程序来读取的,它是由操作系统在安装时初始化建立的。
  引导程序的主要任务是根据操作系统安装时建立的初始化信息在当前跟目录中寻找西欧太难过NTLDR文件,若存在,就把该文件读入内存,并移交控制权给该文件(Vista下则是winload文件)

2.NTLDR

在这个步骤中系统要用到的文件一共有这几个:NTLDR、Bott.ini、ntdetect.com、ntokrnl.exe、Ntbootdd.sys、bootsect.dos(可选的)\Hiberfil.sys。这些文件在系统根目录下以隐藏或系统文件的方式存在。

工作过程:

a. NTLDR将计算机微处理器从16位实模式转换为32位保护模式,在实模式中,系统为ms-dos保留640KB内存,其余内存视为扩展内存,而在32位保护模式中,系统视所有内存为可用内存

b. 启用cpu的内存分页机制,即pagefiles.sys文件

c. 检测硬盘类型,若为SCSI类型,则加载Ntbootdd.sys用于访问磁盘,否则使用INT13访问磁盘

d. 如果发现系统跟目录下有Hiberfil.sys文件且有效,那么NTLDR将读取这个文件的信息并恢复休眠前的状态,这时他不会处理boot.ini文件。(hiberfil.sys是系统休眠功能占用的硬盘空间,休眠时电脑把所有内存中的内容转移到硬盘中并关闭电脑)

e. 加载Boot.ini,选择操作系统,若没有上述的hiberfil.sys文件,则读取boot.ini文件,这时我们会看到操作系统选择的界面,如果用户按f8进入操作系统的启动菜单选项并选择了dos,那么NTLDR将加载Bootsect.com,这时DOS使用的引导扇区副本。

f.加载硬件检测,即执行ntdetect.com,将调用BIOS收集计算机硬件信息列表并保存到HKLM下的hardware中,硬件检测完成后,进入配置选择阶段,如果计算机上有多个硬件配置文件列表,可以通过上下按钮来选择,如果只有一个硬件配置文件,则计算机不显示此屏幕 ,直接用默认的配置文件加载windows xp

g. 加载内核阶段。在这个阶段中,NTLDR紧挨在注册表引导驱动程序,准备将系统控制权交给windows内核的ntoskrnl.exe,接着NTLDR加载硬件抽象层HAL.dll,然后系统继续加载HKLM下的system键,NTLDR读取select键来决定哪个Control set将被加载,控制集中包含设备的驱动程序和需要加载的服务
  NTLDR加载HKLM下的system下的service下的Start键值为0的最底层设备驱动,当作为control set的镜像的current control set被加载时,NTLDR传递控制给内核,执行ntoskrnl.exe的入口函数,初始化内核阶段开始。

3. 内核初始化(Ntoskrnl.exe)

在初始化内核阶段开始的时候,彩色的windows的logo和进度条显示在屏幕上,在这个阶段,windows完成了启动的4项任务:
a. 完成对象定义和核心数据结构初始化,使用在硬件检测时收集到的数据来创建HKLM\system\Hardware键。

b.  完成对象初始化和子系统启动,通过引用HKLM\system\Current的默认值Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改,以上两个过程由随后生成的System Idle Process内核系统线程来完成

c.系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被夹在的底层驱动程序,然后内核扫描HKLM\system\CurrentControlSet\Service\...下Start值为1的设备驱动程序
    这些设备驱动程序在加载的时候完成初始化,若有错误发生,内核使用ErrorControl键值来决定如何处理

d. ntoskrnl创建会话管理进程:Session Manager(smss.exe) ,启动了windows高级子系统和服务。session manager启动控制所有输入输出设备和访问显示器屏幕的win32子系统和Winlogon进程,初始化内核完毕。

4. SMSS.exe文件
a. 运行BootExecute中预定程序,例如autochk,chkdsk等
b.处理Delaved move/name命令
c. 初始化pagingfiles和区域的注册表项目
d.加载并初始化内核模式中的win32子系统win32k.sys
e启动csrss.exe(win32子系统在用户模式的部分)
f. 启动Winlogon.exe登陆系统

5.登陆系统(Winlogon.exe)

该exe启动local security authority,同时windows欢迎屏幕或登录对话框显示出来,这时候程序可能还在后台继续初始化刚才没有完成的驱动程序

a. 启动lsass(本地安全管理组件)
b. 加载logoui组件,显示登录对话框,等待用户登录,logoui组件可以进行二次开发,通过自己开发,可以进行基于质问、声音等生物信息的登录,默认logoui组件式Msgina.dll
c.启动service.exe后台服务,它启动所有标示为自动启动的服务,这时我们在任务管理器中会看到很多svchost
d. 登录成功,加载shell显示桌面。
至此windows启动完成,从上面的步骤看来实际是控制权的逐步移交过程:MBR---Bootsector---NTLDR---Ntoskrnl---Winlogon---Shell


posted on 2009-08-12 20:27  on_road  阅读(955)  评论(0编辑  收藏  举报