深入底层 评估Vista内核模式的安全性
2008-01-17 16:58:44 来源:WEB开发网执行从OslMain开始。它重用了与bootmgr阶段相同的代码,因此InitializeLibrary在bootmgr内的工作原理与在WINLOAD.EXE内的工作原理相似。在InitializeLibrary之后,控制权交给OslMain。
如果启动状态日志记录被激活,WINLOAD.EXE将会把结果写入%SystemDrive%Bootootstat.dat (通过 OslpInitializeBootStatusDataLog和OslpSetBootStatusData)。接下来WINLOAD.EXE调用OslDisplayInitialize,并使用BlResourceFindHtml定位osloader.xsl所在的资源节点。控制权转交给BlXmiInitialize。在系统启动过程中osloader.xsl控制着高级启动选项。在操作完高级启动选项(使用OslDisplayAdvancedOptionsProcess),WINLOAD.EXE现在就准备开始启动。启动阶段首先会使用BlDeviceOpen打开启动设备。根据设备类型,BlDeviceOpen会使用不同的设备函数集来打开设备。
全盘加密(_FvebDeviceFunctionTable) 如下:
dd0;FVEhasnoEnumerateDeviceClasscallback
ddoffset_FvebOpen@8;FvebOpen(x,x)
ddoffset_FvebClose@4;FvebClose(x)
ddoffset_FvebRead@16;FvebRead(x,x,x,x)
ddoffset_FvebWrite@16;FvebWrite(x,x,x,x)
ddoffset_FvebGetInformation@8;FvebGetInformation(x,x)
ddoffset_FvebSetInformation@8;FvebSetInformation(x,x)
ddoffset_FvebReset@4;FvebReset(x)
ForblockI/O(_BlockIoDeviceFunctionTable)theseare:
ddoffset_BlockIoEnumerateDeviceClass@12;BlockIoEnumerateDeviceClass(x,x,x)
ddoffset_BlockIoOpen@8;BlockIoOpen(x,x)
ddoffset_BlockIoClose@4;BlockIoClose(x)
ddoffset_BlockIoReadUsingCache@16;BlockIoReadUsingCache(x,x,x,x)
ddoffset_BlockIoWrite@16;BlockIoWrite(x,x,x,x)
ddoffset_BlockIoGetInformation@8;BlockIoGetInformation(x,x)
ddoffset_BlockIoSetInformation@8;BlockIoSetInformation(x,x)
ddoffset?handleInputChar@OsxmlMeter@@UAEHG@Z;OsxmlMeter::handleInputChar(ushort)
ddoffset_BlockIoCreate@12;BlockIoCreate(x,x,x)
Forconsole(_ConsoleDeviceFunctionTable)theseare:
ddoffset_UdpEnumerateDeviceClass@12;UdpEnumerateDeviceClass(x,x,x)
ddoffset_ConsoleOpen@8;ConsoleOpen(x,x)
ddoffset_ConsoleClose@4;ConsoleClose(x)
ddoffset_ConsoleRead@16;ConsoleRead(x,x,x,x)
ddoffset_ConsoleWrite@16;ConsoleWrite(x,x,x,x)
ddoffset_ConsoleGetInformation@8;ConsoleGetInformation(x,x)
ddoffset_ConsoleSetInformation@8;ConsoleSetInformation(x,x)
ddoffset_ConsoleReset@4;ConsoleReset(x)
Forserialport(_SerialPortFunctionTable)theseare:
ddoffset_UdpEnumerateDeviceClass@12;UdpEnumerateDeviceClass(x,x,x)
ddoffset_SpClose@4;SpClose(x)
ddoffset_SpRead@16;SpRead(x,x,x,x)
ddoffset_SpWrite@16;SpWrite(x,x,x,x)
ddoffset_SpGetInformation@8;SpGetInformation(x,x)
ddoffset_SpSetInformation@8;SpSetInformation(x,x)
ddoffset_SpReset@4;SpReset(x)
ForPXE(_UdpFunctionTable):
ddoffset_UdpEnumerateDeviceClass@12;UdpEnumerateDeviceClass(x,x,x)
ddoffset_UdpOpen@8;UdpOpen(x,x)
ddoffset_SpClose@4;SpClose(x)
ddoffset_UdpRead@16;UdpRead(x,x,x,x)
ddoffset_UdpWrite@16;UdpWrite(x,x,x,x)
ddoffset_UdpGetInformation@8;UdpGetInformation(x,x)
ddoffset_UdpSetInformation@8;UdpSetInformation(x,x)
ddoffset_UdpReset@4;UdpReset(x)
- ››深入理解JAR包
- ››深入分析Volatile的实现原理
- ››深入理解Flash Player的应用程序域(Application ...
- ››深入理解flash函数(AS2)
- ››深入理解Android消息处理系统——Looper、Handler...
- ››深入理解SET NAMES和mysql(i)_set_charset的区别
- ››深入理解Mysql字符集设置
- ››深入浅出实战攻防恶意PDF文档
- ››深入剖析防火墙策略的执行过程:ISA2006系列之六
- ››深入JavaScript与.NET Framework中的日期时间(3)...
- ››深入JavaScript与.NET Framework中的日期时间(2)...
- ››深入JavaScript与.NET Framework中的日期时间(1)...
更多精彩
赞助商链接