标题: Windows启动后看不到登录界面的故障排查 创建: 2019-08-26 20:00 更新: 链接: https://scz.617.cn/windows/201908262000.txt -------------------------------------------------------------------------- 目录: ☆ 问题描述 ☆ 故障排查 1) 事后复盘 ☆ 《格蠹汇编》节录 1) 《第2章 修复因误杀而瘫痪的系统》 2) 《第3章 徒手战木马》 3) 《第4章 调试笔记之侦查广告插件》 4) 《第5章 拯救"发疯"的Windows 7》 5) Windows启动初期几个用户态进程之间的相互关系 5.1) smss.exe的工作 5.2) winlogon.exe的工作 5.3) 登录过程 ☆ 离线注册表编辑 1) Win7补遗 ☆ Autoruns的"Analyze Offline System"功能 ☆ 参考资源 -------------------------------------------------------------------------- ☆ 问题描述 媳妇有台陈旧台式机,装的是XP SP3;平日办公主要用笔记本,装的是Win8;但这台 式机也在用。有天突然给我打电话,说是XP启动后黑屏,左上角有个光标不停地闪, 看不到登录界面。据她自己说,前几天还能正常登录,也正常关机。我问她前几天装 软件或者打补丁了吗,她一口咬定没有做任何此类操作。 F8尝试安全模式、上一次正确配置等等,无效。截了个安全模式最后停下来时的图, 四个角已经显示安全模式,正上方显示XP版本信息,能看到鼠标,看不到登录界面。 在安全模式最后停下来的地方按"Ctrl-Shift-Esc",未能呼出任务管理器。按 "Ctrl-Alt-Del",没反应。当时让她尝试这两步,幻想着如能呼出任务管理器,可以 手工执行explorer.exe,先对付着用。但实际上由于登录界面都未能看到,是我想多 了。 可把她急的,话里话外是想找单位IT部门过来重装,原话是这种,最近那谁谁也碰上 这个现象了,然后找谁谁过来重装就好了。我立刻狂斥之,你可别重装,你要是重装 了,以后能打一万个电话让我善后,你那堆破烂软件我可不想一一配过,还是等我回 头去处理吧。 ☆ 故障排查 在工作生涯中处理过形形色色的故障。如果某次故障值得一记,就会详细记录一番, 跟有些人多年坚持写日记差不多。上次作为老砖家出台,是帮媳妇的大学同学处理一 起DHCP故障,参看: 《一次离奇的DHCP故障排查》 https://scz.617.cn/windows/201806181530.txt 言归正传。当天正好限行,下班回家后等着过了20:00,跟媳妇去了她们单位。带着 几样东西: a) 装有WinPE的U盘 b) sysinternals工具集 c) 张银奎的《格蠹汇编》 d) 1TB的移动硬盘 目标台式式比较陈旧,路上有点担心不支持我这种U盘WinPE启动,该U盘未动用量产 工具模拟成光盘,我的光盘WinPE由于长期不用已经找不到了。只能硬着头皮见招拆 招。 《格蠹汇编》第2至5章介绍了多种典型登录故障、桌面故障,有相当比例的人碰上这 几类问题,有相应技术背景的人参照书中介绍的技术手段即可解决问题。 缺乏理想的工作环境,觉得此次故障可能无法当晚解决,做好最坏打算。如果WinPE 可以启动,先用1TB的移动硬盘把数据盘备份出来,这样不影响后续工作。如果WinPE 启动失败,就物理拆除数据盘,带回到理想的工作环境再备份数据、调试目标系统。 问媳妇,最近有没有访问不该访问的网站,有没有用IE,有没有双击打开U盘中的文 件而这个U盘还在别人机器上插过。检查了她常用的几枚U盘,无明显恶意痕迹。 先正常开机启动,看不到登录界面,左上角光标闪烁。重启时F8,选带CMD的安全模 式,同样看不到登录界面,但能看到安全模式的提示信息及鼠标,没有出现CMD, "Ctrl-Shift-Esc"、"Ctrl-Alt-Del"均无反应。至少这次媳妇反馈到位,没有出现低 级错误。 从故障现象判断,是winlogon.exe、userinit.exe、explorer.exe这几处出了问题。 尝试U盘启动。运气不错,BIOS里正确识别了U盘,WinPE也启动成功。第一时间备份 数据盘,万一后面搞砸了,至少数据弄出来,有个保底成果。 WinPE启动后在资源管理器中注意到目标系统盘(X:)根目录下有个扎眼的MiMouse,其 时间戳对应"2019-08-15"。媳妇说MiMouse是她装的,但不是8月15号装的,而是早就 装了。那可能是MiMouse在8月15号自动升级了。她们放暑假,很长时间没有用这台电 脑,8月15号回京后来单位开过一次机。这是事后我逼问出来的,否则按她原始说法, 8月15号她还在从湖南回北京的火车上,根本不可能操作这台电脑。蒙得过我?这是 科学,不是神学,如果不是她自己用过这台电脑,那就意味着有另一个人在8月15号 用过这台电脑,这个人知道她的用户名和口令,听我说得这么吓人,她就老实交待了。 跟看病一样,很多人讳疾忌医,不愿意老实交待。 搜了一下MiMouse,是科大讯飞智能语音鼠标。她们办公室的小白们搞不好都装了这 玩意儿,但不是每个人的OS都是XP。媳妇的XP因为我处理过,所以这么多年一直算是 流畅不卡顿,就一直用下来了。话说XP现在用得还挺多的,你看那些ATM机、加油机、 地铁电视系统,好多都是XP,就等着Deepin Linux一统江湖了。 本月又有RDP相关漏洞,好像两个月前的那个RDP漏洞微软还为XP出了临时安全补丁。 曾设想过是不是新补丁导致的故障,还YY出一个需求,如何离线检查、卸载Windows 补丁?如果能进安全模式,直接卸载就是了,但这不是进不了安全模式嘛。 打算用Autoruns的"Analyze Offline System"功能。在WinPE环境中执行Autoruns时 提示找不到winhttp.dll,然后就退出了。 当时没有多想,只是觉得既然不能用Autoruns,那就用"离线注册表编辑"技术检查如 下注册表项: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Shell"="Explorer.exe" "Userinit"="C:\\WINDOWS\\system32\\userinit.exe," "VmApplet"="rundll32 shell32,Control_RunDLL \"sysdm.cpl\"" "UIHost"=hex(2):6c,00,6f,00,67,00,6f,00,6e,00,75,00,69,00,2e,00,65,00,78,00,65,\ 00,00,00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot] "AlternateShell"="cmd.exe" -------------------------------------------------------------------------- UIHost的键值数据是"logonui.exe"。XP才有UIHost这个键值,Win7没有。 由于长年不用相关技术,忘了相关HIVE文件的位置;也忘了只能在HKLM或HKU下挂载 离线HIVE文件,当晚愣试出来的;反正想装X没装成。 当时工作环境恶劣,不想临时查文档,就回头琢磨怎么把Autoruns跑起来。这次倒是 简单,从目标系统盘复制"x:\windows\system32\winhttp.dll"到autoruns.exe所在 目录即可。 Autoruns File Analyze Offline System System Root : X:\WINDOWS 本来还有个"User Profile"需要指定目录,但不指定不影响本次排查。Autoruns有一 列是Timestamp,我不太清楚它的精确定义,但总归是个时间线索。注意到若干注册 表项(Userinit、VmApplet)的时间戳是"2019-08-15",与前述MiMouse的时间戳相同。 这天是8月26号,跟15号已经相隔11天。 可以在Autoruns的Everything面板查看Userinit、VmApplet,也可以在Logon面板查 看Userinit、VmApplet,而Winlogon面板只有UIHost(logonui.exe)。不知Autoruns 依据什么原则分置Logon面板、Winlogon面板? 不知道究竟发生了什么,但可以做一个合理猜测,Userinit、VmApplet键值数据引发 故障。检查Userinit,没有发现明显异常。检查VmApplet,注意,Autoruns界面的 "Autorun Entry"、"Image Path"列并不包含 (rundll32 shell32,Control_RunDLL "sysdm.cpl")这种信息,只能看到有个 rundll32,当时误以为这就是全部命令行。不了解VmApplet的意义,看到一个无参数 rundll32在那里,就想当然地认为这是个异常现象,甭管rundll32.exe本身是否被替 换,先在Autoruns中勾掉了它。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 注意到Run子键下360相关项时间戳也是"2019-08-15"。她这台电脑的360还是很多年 前我给装的,我一直认为,对于小白用户,如果硬件资源足以支撑,装360属于利大 于弊,几害相权取其轻。这个判断见仁见智,咱们不辨论。媳妇的电脑我作主,我可 没那么多闲功夫给她提供各种反恶意软件技术支持。装个360,把所有配置项过一遍, 再对系统做些加固,比如禁用U盘自动运行、禁用Server服务、永远显示文件类型和 扩展名等等、用Firefox、Chrome不用IE,至少这么多年下来,没给我整过太多幺蛾 子。 考虑到360相关项的时间相关性,也在Autoruns中勾掉了它们,大不了回头再恢复。 我并未禁用360相关服务,比如"主动防御",只是勾掉了Run子键下的360相关项。 当当当,退出WinPE用目标系统盘重启,F8进安全模式,成功看到登录界面。正常重 启,登录成功,桌面正常。恢复360、卸载MiMouse,再次重启,仍然正常。 1) 事后复盘 只改了注册表中的VmApplet、Run,没有修改其他位置,没有修改文件系统,就恢复 正常;那肯定是VmApplet、Run引发故障。 放狗搜了一下VmApplet,参[2],有一段描述: -------------------------------------------------------------------------- Specifies programs that Winlogon runs for the user so that the user can adjust the configuration of virtual memory when there is no paging file on the system volume. These programs are run only when the system volume does not include a paging file. -------------------------------------------------------------------------- Autoruns里看不到VmApplet键值数据完整内容,应该用"离线注册表编辑"技术去看一 下的。 Win7此处是: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Shell"="explorer.exe" "Userinit"="C:\\Windows\\system32\\userinit.exe," "VMApplet"="SystemPropertiesPerformance.exe /pagefile" -------------------------------------------------------------------------- 如果是Run的问题,不太对啊。因为Run的处理时机是userinit.exe执行时,此时登录 验证已通过,而此故障中登录对话框都看不到。 VmApplet嫌疑更大,可我不想为此事再回到目标现场,况且Autoruns勾掉的项不是每 一个都有备份项的吧? Autoruns的Timestamp列到底是什么时间?在Autoruns中看到的时间戳,有些实际反 映了系统开机时间、用户登录时间等等,有点像*nix系统的atime。 我现在高度怀疑媳妇所说的一切。她应该是在8月15号开机,然后MiMouse、360等自 动升级,touch了注册表项,留下时间戳痕迹。然后直至8月26号才再次开机,中间并 未使用目标电脑,这样才比较合乎逻辑。至于她说的什么前几天还正常,我更愿意相 信她癔症了。 She has a notoriously bad memory. We can't believe what she says. 显然,这次利用Autoruns排错成功具有很大运气成份。更专业的搞法应该是dd目标硬 盘,用VMware挂上,然后用windbg调试启动过程,张银奎在《格蠹汇编》中多次展示 相关技术。 就这样吧,非我系统,和光同尘。 如有相关技术背景,可以看后面的内容,对前述各种技术内容有更进一步的讨论。 ☆ 《格蠹汇编》节录 网上有本书的盗版的图片扫描版,质量不佳。当年我在董阳那里完整看完一遍纸版, 觉得十分过瘾,就自己买了一本收藏。强烈建议购买本书,我非利益相关方。 1) 《第2章 修复因误杀而瘫痪的系统》 现象: 先是Windows开始菜单不见了,后来按杀毒软件提示删除未留心名字的文件后,重启 后不断黑屏、自动重启,再也无法登录进系统。 排查: 通过内核态调试确认是smss.exe启动winlogon.exe失败,而winlogon.exe已不存在。 最终排查出某杀毒软件自带"延迟删除"机制干掉了winlogon.exe、explorer.exe。 解决: 设法阻止该杀毒软件自带"延迟删除"机制,手工恢复winlogon.exe、explorer.exe, 系统得救。 知识点: a) smss.exe创建csrss.exe、winlogon.exe失败时系统自动重启 b) smss.exe支持"延迟删除"机制,MoveFileEx()的使用 c) 在windbg中用"!error"查看错误码 d) 0xc000021a号错误码的参数意义 2) 《第3章 徒手战木马》 现象: 系统配置过自动登录,可以看到空白桌面,桌面上无其他图标,无开始菜单、任务栏。 排查: 根据经验,这是explorer.exe出问题了,未能正常运行。"Ctrl-Shift-Esc"成功呼出 任务管理器,手工执行explorer.exe,桌面恢复正常。 regedit检查如下注册表项: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Shell"="Explorer.exe" "Userinit"="C:\\WINDOWS\\userinit.exe,C:\\WINDOWS\\system32\\some.exe," -------------------------------------------------------------------------- 幺蛾子出在Userinit键值,非正常设置。不存在"C:\WINDOWS\userinit.exe",此时 winlogon.exe尝试启动"C:\WINDOWS\system32\some.exe",而some.exe并不会自动启 动explorer.exe。 解决: 按如下内容重设Userinit键值数据,重启后恢复正常。 -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Userinit"="C:\\WINDOWS\\system32\\userinit.exe," -------------------------------------------------------------------------- 知识点: a) "Ctrl-Shift-Esc"呼任务管理器 b) winlogon.exe、userinit.exe、explorer.exe的关系 3) 《第4章 调试笔记之侦查广告插件》 现象: 桌面时常跳出一个对话框,点击"确定"后开始菜单、任务栏都消失了,过一会儿之后 重新出现。 排查: 前述对话框是Windows著名的"应用程序错误对话框",整个现象应该是explorer.exe崩 溃并自动重启。用JIT调试,调用栈回溯中注意到CoGetClassObject,查看其第一形参 rclsid得到COM对象的类ID,在"HKEY_CLASSES_ROOT\CLSID"下找对应子键,确定对应 的some.dll。 解决: 删除some.dll及相应的注册表设置。 知识点: a) JIT调试 b) 通过分析CoGetClassObject形参定位COM对象对应的.dll c) ".frame /c"的使用 4) 《第5章 拯救"发疯"的Windows 7》 现象: Win7启动进入桌面,大约5秒后系统中所有进程被杀,系统重启,周而复始。选择安全 模式、上一次正确配置,现象依旧。 排查: 通过Win7的WinRE(Windows Recovery Environment)寻找.mdmp文件。WinRE支持U盘, 将.mdmp复制到U盘。用windbg分析.mdmp,调用栈回溯中发现some模块中函数调用触 发栈式缓冲区溢出,被GS机制检查到,导致系统关键进程(比如services.exe)终止、 系统自动重启。 解决: 根本解决方案是修改some模块,避免缓冲区溢出。临时解决方案是,将触发缓冲区溢 出的超长文件路径改成短路径。 知识点: a) Win7的WinRE使用 b) GS机制简介 5) Windows启动初期几个用户态进程之间的相互关系 以XP为例: smss.exe(第一个用户态进程) csrss.exe winlogon.exe lsass.exe logonui.exe services.exe userinit.exe explorer.exe 5.1) smss.exe的工作 a) 执行BootExecute中定义的动作 b) 执行PendingFileRenameOperations中指定的"延迟重命名"操作 c) 初始化paging file和未完成的注册表初始化 d) 加载并初始化win32k.sys e) 创建csrss.exe f) 创建winlogon.exe -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager] "BootExecute"=hex(7):61,00,75,00,74,00,6f,00,63,00,68,00,65,00,63,00,6b,00,20,\ 00,61,00,75,00,74,00,6f,00,63,00,68,00,6b,00,20,00,2a,00,00,00,00,00 "PendingFileRenameOperations"=hex(7):... -------------------------------------------------------------------------- 5.2) winlogon.exe的工作 a) 创建lsass.exe b) (XP)创建logonui.exe c) 加载GINA模块(比如msgina.dll) d) 视情况显示登录对话框,在此处理"Ctrl-Alt-Del" e) 创建services.exe,启动系统服务 5.3) 登录过程 a) winlogon.exe通过GINA模块将user:pass发送给lsass.exe b) lsass.exe进行验证 c) winlogon.exe创建userinit.exe d) userinit.exe创建explorer.exe 如果系统配置过自动登录,没有前两个步骤。 -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "Shell"="Explorer.exe" "Userinit"="C:\\WINDOWS\\system32\\userinit.exe," -------------------------------------------------------------------------- winlogon.exe根据Userinit键值数据定位userinit.exe并启动之。Userinit键值数据 可以包含多项内容,用逗号分隔开;winlogon.exe会依次尝试启动它们,如果第一个 启动失败则尝试第二个,如果有一个成功则本过程结束,如果都失败则强制logoff。 userinit.exe根据Shell键值数据定位explorer.exe并启动之。 userinit.exe会处理如下内容(此时user:pass已验证通过): Group Policy HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce %SystemDrive%\Documents and Settings\All Users\Start Menu\Programs\Startup %SystemDrive%\Documents and Settings\\Start Menu\Programs\Startup ☆ 离线注册表编辑 参看: 《Windows Internals 6th Edition》 CHAPTER 4 Management Mechanisms TABLE 4-3 Registry Root Keys Registry Internals Hives TABLE 4-5 On-Disk Files Corresponding to Paths in the Registry EXPERIMENT: Manually Loading and Unloading Hives Windows的注册表并不是想象中的存储在一个大文件里,而是分散存储在一组被称为 HIVE的文件中。参看如下注册表项,这是XP中的示例: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist] "\\REGISTRY\\MACHINE\\HARDWARE"="" "\\REGISTRY\\MACHINE\\SECURITY"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\SECURITY" "\\REGISTRY\\MACHINE\\SOFTWARE"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\software" "\\REGISTRY\\MACHINE\\SYSTEM"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\system" "\\REGISTRY\\USER\\.DEFAULT"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\default" "\\REGISTRY\\MACHINE\\SAM"="\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\SAM" "\\REGISTRY\\USER\\S-1-5-20"="\\Device\\HarddiskVolume1\\Documents and Settings\\NetworkService\\NTUSER.DAT" "\\REGISTRY\\USER\\S-1-5-20_Classes"="\\Device\\HarddiskVolume1\\Documents and Settings\\NetworkService\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat" "\\REGISTRY\\USER\\S-1-5-21-...-500"="\\Device\\HarddiskVolume1\\Documents and Settings\\Administrator\\NTUSER.DAT" "\\REGISTRY\\USER\\S-1-5-21-...-500_Classes"="\\Device\\HarddiskVolume1\\Documents and Settings\\Administrator\\Local Settings\\Application Data\\Microsoft\\Windows\\UsrClass.dat" -------------------------------------------------------------------------- 相应的键值数据就是所有当前被加载的HIVE文件。如果某个HIVE被卸载的话,则删除 相应的键值。理论上,用WinPE或其他类似手段离线访问硬盘,备份上述HIVE文件, 即完成了注册表的完整备份。 假设用WinPE或其他系统挂载了目标硬盘,执行regedit,选中HKEY_LOCAL_MACHINE, 在文件菜单项里选"加载配置单元",在目标硬盘(X:)中选择HIVE文件,比如 "X:\WINDOWS\system32\config\system",起名OFFLINE,现在出现了注册表子键 "HKEY_LOCAL_MACHINE\OFFLINE"。访问OFFLINE子键,就是离线访问原来的 "HKEY_LOCAL_MACHINE\SYSTEM",此时可以离线编辑注册表,比如修改Control子键下 的内容。相反操作是,选中OFFLINE子键,在文件菜单项里选"卸载配置单元"。 OFFLINE子键只能挂在HKLM或HKU下面,否则"加载配置单元"是灰的,不可选。 就上例而言,我们关注: -------------------------------------------------------------------------- HKLM\SYSTEM X:\WINDOWS\system32\config\system HKLM\SOFTWARE X:\WINDOWS\system32\config\software HKLM\SECURITY X:\WINDOWS\system32\config\SECURITY User Profile X:\Documents and Settings\\NTUSER.DAT -------------------------------------------------------------------------- 很多WinPE的"Windows注册表编辑器"做过特殊处理,跟你在cmd中执行regedit不一样; 前者会提示"你是否希望载入远程Windows用户注册表配置单元",让你选, 会自动在HKLM、HKU下挂载目标系统盘中的各个HIVE文件。一般位于: 程序 安装维护 Windows注册表编辑器 1) Win7补遗 这是Win7中的示例: -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelist] "\\REGISTRY\\MACHINE\\HARDWARE"="" "\\REGISTRY\\MACHINE\\SAM"="\\Device\\HarddiskVolume2\\Windows\\System32\\config\\SAM" "\\REGISTRY\\MACHINE\\SECURITY"="\\Device\\HarddiskVolume2\\Windows\\System32\\config\\SECURITY" "\\REGISTRY\\MACHINE\\SYSTEM"="\\Device\\HarddiskVolume2\\Windows\\System32\\config\\SYSTEM" "\\REGISTRY\\USER\\.DEFAULT"="\\Device\\HarddiskVolume2\\Windows\\System32\\config\\DEFAULT" "\\REGISTRY\\MACHINE\\SOFTWARE"="\\Device\\HarddiskVolume2\\Windows\\System32\\config\\SOFTWARE" "\\REGISTRY\\MACHINE\\BCD00000000"="\\Device\\HarddiskVolume1\\Boot\\BCD" "\\REGISTRY\\USER\\S-1-5-20"="\\Device\\HarddiskVolume2\\Windows\\ServiceProfiles\\NetworkService\\NTUSER.DAT" "\\REGISTRY\\USER\\S-1-5-19"="\\Device\\HarddiskVolume2\\Windows\\ServiceProfiles\\LocalService\\NTUSER.DAT" "\\Registry\\User\\S-1-5-21-...-500"="\\Device\\HarddiskVolume2\\Users\\Administrator\\NTUSER.DAT" "\\Registry\\User\\S-1-5-21-...-500_Classes"="\\Device\\HarddiskVolume2\\Users\\Administrator\\AppData\\Local\\Microsoft\\Windows\\UsrClass.dat" -------------------------------------------------------------------------- 注意Win7中BCD的对应内容,用WinPE启动后可以离线编辑BCD: bcdedit /? store bcdedit /store bcdedit /store c:\boot\bcd /enum 理论上,可以在regedit中操作"HKEY_LOCAL_MACHINE\BCD00000000\Objects"子键。 ☆ Autoruns的"Analyze Offline System"功能 以XP为例,假设用WinPE或其他系统挂载了目标硬盘(X:)。 Autoruns File Analyze Offline System System Root : X:\WINDOWS : 确保存在"X:\WINDOWS\system32\config\system" User Profile : X:\Documents and Settings\ : 确保存在"X:\Documents and Settings\\NTUSER.DAT" : X:\Users\ : Win7用这个 参[1],Chad Tilbury提到离线使用Autoruns时的两个BUG及一个需求: -------------------------------------------------------------------------- a) Regardless of the mount point your image is using, the tool reports the Image Path using C:\ b) Sometimes seeing results intermingled between the offline image and the local system values. A good indicator that something may be amiss is if you see large numbers of "File not found" entries in the Image Path column. In these instances, I was also able to determine that some of the digital signature verification was taking place on the similarly named dlls and executables on the local system as opposed to the offline system image. c) Maybe they will even add column sorting for the GUI interface. -------------------------------------------------------------------------- Chad Tilbury提上述内容时是2010年,现在是2019年,BUG还在,需求也未满足。我 其实挺想对Timestamp列排序的。 "离线注册表编辑"与Autoruns的"Analyze Offline System"是冲突的,只能二选一, 不能同时使用。比如已经进入"离线注册表编辑",此时使用Autoruns的 "Analyze Offline System",输入"System Root"后会提示: Cannot load registry hive 'system' of the selected system root 单看这个提示,你会以为"System Root"输错了,其实是访问冲突导致的。如果先进 入Autoruns的"Analyze Offline System",此时尝试进入"离线注册表编辑"会提示: Registry Access Error: 应用程序发出的IOCTL调用不正确 ☆ 参考资源 [1] Autoruns and Dead Computer Forensics - Chad Tilbury [2010-06-28] https://digital-forensics.sans.org/blog/2010/06/28/autoruns-dead-forensics/ [2] http://systemmanager.ru/win2k_regestry.en/12331.htm (有一段对VmApplet的描述) [3] https://www.forensicswiki.org/wiki/Windows_Registry [4] Troubleshooting the Startup Process - [2009] https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457123(v=technet.10) https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457123(v=technet.10)#logon-phase (重点看"Logon Phase") Understanding the Startup Process https://sourcedaddy.com/windows-7/understanding-the-startup-process.html Logon Phase https://sourcedaddy.com/windows-7/logon-phase.html