前两天关于 Windows 启动进入恢复模式 讲了如何让 Windows 在启动时自动进入恢复模式,是不是很容易?为了不局限于做一个知道分子,不免好奇心做遂,想了解一下为什么 reagentc /boottore 可以让 Windows 进入恢复模式。
拿起 IDA,打开 reagentc.exe,发现其处理命令行的主要函数:
根据命令行参数设置恢复动作的函数
上图两个函数来自于 reagent.dll。WinReQueueRecoveryBoot 犹为关键,来看看它:
设置一个 BCD 项
其实到这里,我都有些怀疑,难道就是设置个 BCD 项这么简单?继续看设置了什么 BCD 项:
BootMgr 下设置 24000002 元素
看到了吗,是在{BootMgr}下添加一个 24000002 元素,其值指向 Windows Recovery Environment 的 GUID。(这里不明白可参见我之前文章闲聊 Windows 注册表-BCD 注册表)
这个 24000002 元素的名字是 BootSequence,意义很明显。我测试了一下,手动添加该元素后,重启虚拟机自动进入到恢复模式选单,选择启动 Windows 后,再次重启就正常了,说明 Windows 正常进入后又把该 24000002 元素删除了。
好了,相信你对 BCD 又多了一点认识,记得发个评论点个赞哟!