系统的引导过程

1、当你按下开机键时,最早是由主板BIOS 蕊片中的BIOS 程序来执行硬件检测任务的,如果检查过程
中发现关键硬件的故障,就会发出特定的响声通知用户,并停止启动。而BIOS 程序是哪里来的呢?这是在
主板出厂时固化在芯片中的一段程序。
2、当硬件没有问题时,BIOS 程序就会读入硬盘的主引导记录,将下面的任务交给主引导记录代码去完
成。而主引导记录又是哪里来的呢?这是在安装操作系统时对磁盘进行分区格式化操作时,写到硬盘中的。
如果找不到主引导记录,会出错停止,告诉你这是非法的系统启动盘。
3、主引导记录代码的工作是读入磁盘主分区的根目录,在里面读出Ntldr 文件,并装入内存,然后将
控制权交给它。注意看一下,你的硬盘根目录下是不是有个Ntldr 文件?这个文件的属性是隐藏、系统,
所以查看时要选择查看所有,且不隐藏被保护的系统文件才可看到。这个文件是哪里来的?呵,当然是安
装操作系统时拷贝到硬盘上的,下面提到的文件都是在安装操作系统时拷上去的。如果没能找到Ntldr 文
件,则会停止启动,显示Ntldr 没找到的错误信息。
4、Ntldr 又做了些什么呢?它会将系统由原来的16 位实模式切换到32 位保护模式或64 位长模式。它
的工作是读取根目录下的Boot.ini 文件,显然引导菜单,在多操作系统的计算机中,可以看到这个菜单。
接着它会清屏,并在Win2000 下显示一个黑白的进度条,在XP 下显示XP 的标志图同时显示下面不断滚动
的蓝色进度条,提示你它正在加载一些重要的文件。它在加载什么呢?它首先会加载Ntoskrnl.exe、
Hal.dll,如果这两个文件找不到会出错停机,并显示找不到相应文件的信息。接着它读入注册表的SYSTEM
键文件,从中找出自动启动的各类驱动程序,这是很关键的,因为有些内核级的木马就是在这时启动的。
每加载一个屏幕上的进度条就滚动一下子。中间如果某个驱动出问题,也可能会导至系统蓝屏崩溃。
5、接下来的工作由Ntoskrnl.exe(或Ntkrnlpa.exe)来进行,这是内核程序,它做的工作实在是太多
了,这里就不再细说了。它的最后一步工作就是创建会话管理子系统,也就是我们上面说过的,由System
进程创建的Smss.exe 进程。
6、Smss.exe 进程负责创建用户模式环境,由用户模式环境向Windows 提供可视的窗口界面。
它会运行BootExecute 中定义的程序,正常情况下是Autochk,一个检查磁盘的程序。但有些杀毒软件
会把自己的程序加到这里,来实现引导时杀毒,如果您的系统安装了江民类的杀毒软件,那么此时就会执
行它的引导期杀毒程序,就是进入系统前出现的蓝底蓝字的病毒扫描窗口。
Smss.exe 还会执行SessionManager 中的文件删除、移动操作,也就是调用API:MoveFileEx 并选择重
启后移除文件的,就是在这个环节执行了。当前有很多号称可以删除一切文件的安全工具都使用了
MoveFileEx 来实现文件的删除,但是现在我们可以知道了,它的文件删除是在这个阶段执行的,而这时驱
动程序已经加载了,所以用它们来清除驱动级的木马显然是不胜任的。
创建附加的页面文件。
加载Win32k.sys,这个东西又是做什么的呢?这是一个内核模式的系统驱动程序,它负责了窗口的显
示、屏幕的输入、鼠标键盘和其它设备的输入及消息的传递等。所以也是由Win32k.sys 将显示器的分辩率
设置为默认值的,也就是这个时候,咱们的计算机屏幕才真正的细致起来,在此以前都是VGA 模式,当然
了视频驱动是上面装载驱动程序时就已经加载了的,现在只是起到作用而已。
再然后呢,就是启动我们上面说过的那两个进程了。就是Csrss.exe 与Winlogon.exe 进程。-
启动完这两个进程后,Smss.exe 就进入了无限的等待,它在等什么呢?它在等它创建的Csrss.exe 与
Winlogon.exe,等着看这两个进程什么时候死掉,一旦他们中有死掉的,Smss.exe 马上罢工,让系统彻底
崩溃。(在XP 以后Csrss 的死亡是由内核使系统崩溃的,而不是Smss.exe),所以千万不要结束系统进程。
Csrss.exe 是做什么的呢?它负责的工作是创建或删除进程、线程,控制台与虚拟DOS 机的支持等。它
到此就开始工作了,不再参于后面的启动过程。但是Winlogon.exe 还有很多工作要做呢,我们接下来看看
后面的启动过程。
7、Winlogon.exe 是做什么的呢?看它的名字应该看出个大概了吧。是的,它是与登录相关的,但现在
还不到显示登录窗口的时候,它还要先启动Services.exe 及Lsass.exe 进程,然后读取注册表GinaDLL 中
标明的DLL,由这个DLL 来显示一个登录对话话,也就是我们在进入系统时输入用户名与口令的窗口。
为什么要先启动Lsass.exe 呢?因为,这是本地安全认证子系统,负责的就是本机系统的安全,用户名
与口令的验证工作是由它来进行的。
还有一个我们上面提到过的进程也是这个时候由Winlogon.exe 来启动的,是哪一个呢?就是那个
Userinit.exe,这是在用户登录进系统后,Winlogon.exe 启动此进程来进行用户初始化。你也可以自己加
一个程序与Userinit.exe 放在一起,那么,在这个时候Winlogon.exe 会将那一位置的所有程序都启动起
来。
当然了,相信你也想到了,这个还有那个GinaDLL 也就成了木马启动的一个可选位置。
8、最后,由Winlogon.exe 启动的Services.exe 开始加载标明为自启动的各个服务,及标明为手动的
却是有必要加载的服务(它所做的工作我们在后面细讲)。
9、而Userinit.exe 呢,它在完成用户初始化后,就启动了Explorer.exe,并功成身退。
10、最后,Explorer.exe 就成了我们的服务员,等待在那里静候我们的指令,听从我们的吩咐,进行
相关程序的启动与功能的处理。




补充1:一般情况系统的引导过程是这样的:

1、电源自检程序开始运行
2、主引导记录被装入内存,并且程序开始执行
3、活动分区的引导扇区被装入内存
4、NTLDR从引导扇区被装入并初始化
5、将处理器的实模式改为32位平滑内存模式
6、NTLDR开始运行适当的小文件系统驱动程序。
小文件系统驱动程序是建立在NTLDR内部的,它能读FAT或NTFS。
7、NTLDR读boot.ini文件
8、NTLDR装载所选操作系统 *如果NT/XP被选择,,
NTLDR运行Ntdetect.com 对于其他的操作系统,
NTLDR装载并运行Bootsect.dos然后向它传递控制。
windows NT过程结束。
9.Ntdetect.com 搜索计算机硬件并将列表传送给NTLDR,以便将这些信息写进HKEY_LOCAL_MACHINEHARDWARE中。
10.然后NTLDR装载Ntoskrnl.exe,Hal.dll和系统信息集合。
11.Ntldr搜索系统信息集合,并装载设备驱动配置以便设备在启动时开始工作
12.Ntldr把控制权交给Ntoskrnl.exe,这时,启动程序结束,装载阶段开始  

补充2:微软官方网站的对该故障的说明

启动计算机时收到“NTLDR is missing”(缺少 NTLDR)错误信息

症状:在将多个文件复制到使用 NTFS 文件系统的启动卷的根文件夹后,下次启动计算机时可能会收到下面的错误信息: NTLDR is missing Press CTRL+ALT+DEL to restart.如果删除复制到根文件夹的文件,主文件表 (MFT) 分配索引并不会降到原大小。

原因:如果 MFT 根文件夹碎片较多,则可能会出现此问题。如果 MFT 根文件夹包含多个文件,则 MFT 就会变得非常零碎,以至于需要另外创建一个分配索引。因为文件是按字母顺序映射到分配索引中的,NTLDR 文件可能会被推到第二个分配索引中。如果发生此现象,就会看到本文“症状”部分中描述的错误信息。一般情况下不将文件写入根文件夹。如果一个程序定期在根文件夹中创建和删除临时文件,或者将许多文件误复制到根文件夹,就会造成这一情况。

posted @ 2013-04-29 18:25  Geekers  阅读(343)  评论(0编辑  收藏  举报