一个典型的Boot Manager的BCD配置文件如下:
Windows Boot Manager
Identifier: {bootmgr}
Type: 10100002
Device: partition=C:
Description: Windows Boot Manager
Locale: en-US
Inherit options: {globalsettings}
Boot debugger: No
Pre-boot EMS Enabled: No
Default: {current}
Resume application: {3ced334e-a0a5-11da-8c2b-cbb6baaeea6d}
Display order: {current}
Timeout: 30
如果只有一个启动入口在BCD文件内,启动管理器会直接从该入口启动 。如果多于一个启动入口,Boot Manager会给用户一个可选择的列表,并提示用户选择启动那个OS 。如果启动阶段激活了日志记录,启动管理器会把状态信息写入%SystemDrive%/Boot/bootstat.dat文件内(通过BmpInitializeBootStatusDataLog) 。紧接着启动管理器会使用BlResourceFindHtml把bootmgr.xsl定位在资源节点,而后把它传给BlXmiInitialize 。bootmgr.xsl文件控制启动菜单和位于启动菜单的选项 。
如果启动列表的某个条目被选择,跟随BmpTransferExecution之后,将使用BmpLaunchBootEntry对该条目进行加载 。BmpTransferExecution将重新找回启动选项(通过BlGetBootOptionString)并把他们交给BlImgLoadBootApplication 。如果FVE(Full Volume Encryption)被激活,BlFveSecureBootUnlockBootDevice和 BlFveSecureBootCheckpointBootApp将被调用 。由于Windows分区被加密,必须在把控制权交给Vista OS Loader前对分区进行解密 。
最后,Boot Manager调用BlImgStartBootApplication把控制权交给Vista OS Loader 。
B、;;;;Windows Vista OS Loader (阶段2)
bootmgr调用了位于%SystemRoot%/System32/WINLOAD.EXE下的Vista OS Loader 。WINLOAD.EXE替换了NTLDR(Windows NT OS Loader),该小节的最后部分,会引用WINLOAD.EXE在开始入口点(OslMain)的指令 。
A typical BCD entry for the Windows Vista OS Loader looks like this:
一个典型的Vista OS Loader的BCD入口配置文件如下:
Windows Boot Loader
Identifier: {current}
Type: 10200003
Device: partition=C:
SYMANTEC ADVANCED THREAT RESEARCH 3
Path: /Windows/system32/WINLOAD.EXE
Description: Microsoft Windows
Locale: en-US
Inherit options: {bootloadersettings}
Boot debugger: No
Pre-boot EMS Enabled: No
Advanced options: No
Options editor: No
Windows device: partition=C:
Windows root: /Windows
Resume application: {3ced334e-a0a5-11da-8c2b-cbb6baaeea6d}
No Execute policy: OptIn
Detect HAL: No
No integrity checks: No
Disable boot display: No
Boot processor only: No
Firmware PCI settings: No
Log initialization: No
OS boot information: No
Kernel debugger: No
HAL breakpoint: No
EMS enabled in OS: No
执行从OslMain开始 。它重用了与bootmgr阶段相同的代码,因此InitializeLibrary在bootmgr内的工作原理与在WINLOAD.EXE内的工作原理相似 。在InitializeLibrary之后,控制权交给OslMain 。
如果启动状态日志记录被激活,WINLOAD.EXE将会把结果写入%SystemDrive%/Boot/bootstat.dat (通过 OslpInitializeBootStatusDataLog和OslpSetBootStatusData) 。接下来WINLOAD.EXE调用OslDisplayInitialize,并使用BlResourceFindHtml定位osloader.xsl所在的资源节点 。控制权转交给BlXmiInitialize 。在系统启动过程中osloader.xsl控制着高级启动选项 。在操作完高级启动选项(使用OslDisplayAdvancedOptionsProcess),WINLOAD.EXE现在就准备开始启动 。启动阶段首先会使用BlDeviceOpen打开启动设备 。根据设备类型,BlDeviceOpen会使用不同的设备函数集来打开设备 。
For Full Volume Encryption (_FvebDeviceFunctionTable) these are:
dd 0 ; FVE has no EnumerateDeviceClass callback
dd offset _FvebOpen@8 ; FvebOpen(x,x)
dd offset _FvebClose@4 ; FvebClose(x)
dd offset _FvebRead@16 ; FvebRead(x,x,x,x)
dd offset _FvebWrite@16 ; FvebWrite(x,x,x,x)
dd offset _FvebGetInformation@8 ; FvebGetInformation(x,x)
dd offset _FvebSetInformation@8 ; FvebSetInformation(x,x)
dd offset _FvebReset@4 ; FvebReset(x)
For block I/O (_BlockIoDeviceFunctionTable) these are:
推荐阅读
- 图 AVG Anti-Virus可保护Vista Beta 2实例
- 实战破解WinVista Beta2的本地密码
- 图 某人试了下传说中的vista
- 图 小技巧一则:避免微软Vista浏览器的崩溃
- 实战:破解 Vista Beta 2 的本地密码
- 图 Vista工作站安全防护有高招儿
- 图 Vista SP1最新下载地址及安装过程
- 打击非法用户登录--Vista帐户锁定
- 微软认为Vista比其他操作系统更加安全
- 对Windows Vista中的文件和文件夹加密