windows系统启动分析

    xiaoxiao2022-07-07  207

    /***************************************************************************************** *Talk is cheap,show me the code! *I’ve been on the hill, I’ve been on the underside,and I’ve learned a lot from both! ***/ 系统启动分析(xp): //

    通电自检(power-on-self-test) 这一步主要对计算机安装的处理器,内存等硬件进行检测 2.位于主板上的固化ROM的BIOS读取硬盘中的0道0面0区 MBR(master boot recoder)主引导记录。 主引导记录执行446bytes的代码,分析并检测当前分区表的完好性和可用性。再根据MBR中的分区表信息内容,寻找到当前可引导活动分区。 3.加载主活动分区的引导扇区内容(Dos boot Recoder,DBR),引导扇区从磁盘根目录读取Ntldr文件。 setup程序在写一个引导扇区之前,会根据不同的分区格式,往引导扇区写入不同的内容。 eg: 如果引导分区是一个FAT分区,那么,Windows把能理解FAT文件系统的代码写入引导扇区中。 引导扇区代码的职责就是给Windows提供有关卷的结构和格式方面的信息,并且从该卷的根目录中读入Ntldr文件。在引导扇区的代码将Ntldr加载到内存中以后,就把控制权交给Ntldr的入口点 /*********************************************************************************************** ***********************************************************************************************/ 4 .Ntldr根据内建的文件系统代码进行初始化,然后从根目录读取boot.ini文件。Ntldr清除屏幕,如果boot.ini文件中有多种引导选项,则显示引导选项选择菜单;如果在boot.ini制定的超时范围内未有任何动作的话,Ntldr就会根据默认选项启动电脑。 Ntldr加载并执行Ntdetect.com(这是一个使用系统bios进行查询计算机基本设备和设置信息的16位实模式程序,比如查询存储在系统CMOS中的时间和日期信息)。 // 细节:Ntdetect.com首先要将当前计算机中安装的所有硬件信息收集起来,并形成一个列表,接着将该表交给Ntldr(这个表的信息稍后会被用来创建注册表中有关硬件的键)至此,硬件检测操作已经完成。 接着Ntldr清屏并显示“Starting Windows…"进度条。这个进度条保持空白直到Ntldr开始加载引导驱动程序(假如有100个引导驱动程序,则每加载一个就增加1%) Ntldr加载合适的内核和HAL映像文件(默认为Ntoshrnl.exe和HAL.dll),读入SYSTEM注册表hive文件(hive文件是一种包含注册表子树的文件)以确定该加载那些引导驱动程序,加载引导驱动程序,准备CPU寄存器以便执行Ntoskrnl.exe。 Ntldr调用Ntoskrnl.exe,为它传递一大堆的数据信息(包含Boot.ini中代表本次引导的菜单选项所在的字符串;还包括3个指针。 一个指向那些由Ntldr生成的,用来描述系统中物理内存的内存表 一个指向HARDWARE和SYSTEM注册表HIVE在内存中的拷贝, 第三个指向Ntldr加载的引导驱动程序列表。 然而Ntoskrnl.exe开始分两阶段初始化,在一系列的初始化工作完成后Ntoskrnl.exe为系统本机应用程序做准备并运行smss.exeSmss.开始执行。它的首要任务是启动Windows子系统,然后初始化注册表,创建系统环境变量,加载win32子系统(win32k.sys)的内核模式部分,启动子系统进程Csrss,启动登录进程Winlogon /*********smss具体所作的事************/ 在执行了这些初始化步骤以后,smss中的主线程进入无限等待,它在等待Csrss和Winlogon的进程句柄。 如果这两个进程任一个非正常终止,smss就会让系统崩溃,因为WINDOWS依赖于这两个进程的存在。 在xp以后如果Csrss出于任何一个理由退出了,那么是内核使系统崩溃,而不是smss。然后winlogon开始执行其启动步骤,eg:创建初始的窗口和桌面对象services.exe),并加载设备驱动程序和本机安全验证子系统lsass.exe 如果HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\GinaDLL 中指定一个DLL,那么,Winlogon使用该DLL作为windows登录对话框 接着Winlogon创建服务控制管理器(SCM)进程 winnt\System32\Services.exe, 它加载所有的标记为自动启动(auto-start)的服务程序和设备驱动程序。 当一切加载成功且用户在控制台成功登录后,SCM则认为系统引导成功,便放弃注册表中已知最近正确配置 HKLM\System\select\LastKnownGod),而改由\CurrentControlSet 替代 Winlogon激发了SCM之后,它便等待来自GINA的交互式登陆通知。当它接收到一个登录,并且验证该登录确定有效以后,Winlogon从登录用户的轮廓中加载HIVE,并且将它映射到HKCU。然后设置该用户的环境变量启动完成 注:本文转载添加链接描述 自己过一遍,了解下windows启动的过程,以后遇到自己电脑问题也可以自己分析,以及研究可以利用的服务进程,争取早日发现服务漏洞。(例如:Mimikatz与lsass.exe本地安全认证子系统不得不说的事)
    最新回复(0)