Windows操作系统启动介绍(一)

  有两篇,分别介绍的是Windows 2000/XP/2003和Windows Vista/2008/7/2008R2/8/2012的启动过程;即NT5.X和NT6.X的启动过程。这是第一篇,为了忠实于原文,不做任何修改,直接上图文。

小病毒引发的大道理

     

一、卖药与治病

    曾对一帮销售做讲座,即兴之中抛出如下观点:我觉得我们做安全的,不应该是江湖骗子,卖药赚钱;而应该是医生,治病救人。现在想想,这话还有点意思。自我良好的感觉如下:第一,热爱行业,具有使命感和责任感,于工作中找到乐趣;第二,安全不是单单是产品的叠加与使用,包含有一定技术的产品不是万能的,安全是涉及到方方面面的一个系统的,复杂的渐进过程。

 

二、医生的故事

    这不,努力做“医生”的我们,有时会有突发事故需要处理,下面这一个,也有点意思,所以又摆到这里请大家看看。

    事故时间:20071月初

    事故地点:某中级人民法院

    事故对象:十多台服务器及数百台办公PC

    对象病症:BIOS自检后没反应,黑屏,有的机器打印空白纸张

    诊断过程:光盘启动、检查系统,还有简捷的推理判断

    药方决策:替换某系统文件

    治疗效果:药到病除,客户感激不尽

 

三、故事之外的

    呵呵,各位可别骂我上面很多地方“卖关子”,这里的“卖关子”,正是今天要和大家好好聊的地方。其实该事故,是由“熊猫烧香”这个小病毒的一个变种引起的,但却引发了Windows操作系统的重要部分——启动过程——这一大道理的登场。这可是一个很复杂的问题,可深可浅,可长可短。但在此文中,本着从简从快的方针来叙述。文字有时表达力有限,所以大家先看下面的图片,Windows操作系统(Vista已略有变化)的启动过程大致如下:

 

四、再说详细点

        CPU复位:CPU最初上电时是处于实模式。(以前DOS的时代使用16位实模式,实模式下,CPU20位(段寄存器与偏移量构成)寻址。后来286386开始出现了保护模式,CPU32位寻址,使用线形内存,并为内存提供分页和访问控制;提供内存、CPU分级保护,加强了安全性。这里内容太复杂,感兴趣的自己去钻研。)

 

        BIOS基本输入输出系统,这个阶段不多说了。(过程大致为:加电-CPUROMBIOSSystemClockDMARAMIRQ-显卡等。如果关键部件有问题,计算机会处于挂起状态,检测完显卡后,计算机将对内存、IO、软硬盘驱动器、键盘、即插即用设备、CMOS设置等进行检测,并在屏幕上显示各种信息和出错报告。)

 

        MBR主引导纪录,读入和加载分区的引导扇区。(此时CPU处于16位实模式。)

 

        Boot Sector引导扇区,读入根目录,以加载NTLDR(此时CPU也处于16位实模式。)

 

      NTLDR系统启动过程中最重要的文件之一。NTLDR 加载后,如果是SCSI硬盘,则使用NtBootDD.sys访问硬盘,否则使用INT 13访问硬盘。

    此后如果在系统卷根目录下发现了Hiberfil.sys 文件且文件有效,则读取Hiberfil.sys 里面的信息并让系统恢复到休眠以前的状态。这个时候并不处理BOOT.INI 文件。

    如果BOOT.INI 文件里面有两个或两个以上的启动选项,那么NTLDR 暂停系统引导,让用户选择一个启动选项直至超时。超时以后,NTLDR 读取BOOT.INI里面DEFAULT 后面的信息,获取Windows 目录的路径以便执行后面的启动流程。如果BOOT.INI 文件非法或不存在,那么NTLDR 将尝试从默认系统卷启动系统。

    按下F5F8 会显示启动菜单,启动菜单里面可以选择多种启动模式。NTLDR 根据用户的选择,设置不同的启动参数并使用启动参数来加载NT 内核。

    进入启动流程的NTLDR 将调用NTDETECT.COM 来获取基本的硬件信息,然后把这些信息传递给Windows内核程序。

(经历16位实模式,以及32位或64位保护模式,打开分页机制;加载Ntoskrnl.exe,Bootvid.dll,Hal.dll和引导驱动的设备驱动程序,如果引导的是32位系统,则切换到32为保护模式,如果引导的是64位系统,则切换到64位长模式。)

 

    NTDETECT.COM是一个16位实模式程序,它使用系统的BIOS的查询系统的基本设备和配置信息:

   ☆存储在系统CMOS中的时间和日期

   ☆系统中的总线类型以及上面的设备标志符

   ☆系统中磁盘驱动器的个数、大小和类型

   ☆连接到系统上鼠标输入设备的类型

   ☆系统中配置的并行端口的数目和类型

   ☆系统中的视频适配器的类型

  (这些信息被收集到内部数据结构中,到引导的后期,他们被存放在HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION的下面。)

 

        OS Kernel主要为加载的Ntoskrnl.exe,Bootvid.dll,Hal.dll和引导驱动设备的驱动程序等内核模块。以DLL方式输出函数给Hal(硬件抽象层)和其他内核模块,实现内核服务,创建SMSS进程。(该过程非常复杂,又涉及到很多代码和函数,在此粗略带过。)

 

        Smss会话管理器。是第一个在系统中创建的用户态进程,是Windows最可信的部分,是一个原生(native)的应用程序(它不能、也没可能使用Win 32API,而是使用核心执行体的API)。主要执行一些关键的系统初始化步骤,启动Win 32子系统,等待CsrssWinLogon进程句柄,如果这些进程意外终止,Smss将使系统崩溃。

 

        Csrss说白了,它就是Win32子系统进程。Csrss负责控制Windows,创建或删除线程和一些16位的虚拟DOS环境。(除了Win 32子系统外,还有POSIX,OS/2等子系统,大家感兴趣的话,自己去找资料看。)

 

       WinLogon登陆进程。主要提供登陆界面LogonUI,系统服务(Services)和本地安全身份验证服务器(Lsass)

如果在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL指定了一个GINA,那么WinLogon将使用该DLL作为GINA,否则将使用默认的GINA%systemroot%system32\Msgina.dll),此GINA显示默认登陆对话框。WinLogon创建服务控制管理进程Services.exe和本地安全身份验证服务进程Lsass.exe。这个过程设计到本地、网络的登陆认证,SAM等,如下图示:

 

 

        SvcHost也不必多说了,鼎鼎大名的宿主程序,很多服务的寄生主体。当然在这里并不只Svchost一个宿主服务,还包含别的服务,如PlugPlaySpooler等。

 

        UserInit可以看作一个用户环境配置程序。在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\userinit处,很多病毒会篡该这里,正常情况下为%systemroot%system32\userinit.exeUserInit执行登陆和初始化脚本,然后启动注册表中的Shell键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\shell定义的Shell程序,正常情况下为Explorer.exe,最后退出。

 

        StartUp APP一些随系统启动的程序或服务,如常见的几个位置如下:

        HKLM(或HKCU)\SoftwareMicrosoftWindowsCurrentVersionRun

       HKLM(或HKCU)\SoftwareMicrosoftWindowsCurrentVersionRunOnce

       HKLM(或HKCU)\SoftwareMicrosoftWindowsCurrentVersionRunOnceEx

       HKLM(或HKCU)\SoftwareMicrosoftWindowsCurrentVersionRunServices

 

        Explorer也不必多说了,连这个都不认识,就不好意思说你熟悉Windows了,它即我们的桌面,图形化的Shell

 

五、又回到最初

   谢谢各位极富耐心地看到这里,现在我们又要回到话题的最初,如下所示:

         …… 

   对象病症:BIOS自检后没反应,黑屏,有的机器打印空白纸张

   诊断过程:光盘启动、检查系统,还有简捷的推理判断

   药方决策:替换某系统文件

        …… 

    你们是不是也明白诊断过程所思所想了吧,当时用光盘启动一问题机器后,发现该机器操作系统的NTDETECT.COM文件被万恶的“熊猫烧香”给修改了,所以出现上述的病症,于是用相同系统版本,未受损坏的文件替换,重起电脑,问题解决。

 

 

 

                              XXX

                                              2007107

你可能感兴趣的:(windows,原理,启动,熊猫烧香)