03-15-2020, 09:51 PM
为了找一台可以移植 coreboot 的 Haswell 及之后 Intel Core 处理器笔记本电脑,需要先检测有没有 Boot Guard.
coreboot 社区以前收录了 intelmetool,它的 Boot Guard 检测是查看一个 CPU MSR 的值,但是这个方法恐怕不准确,有的没有 Boot Guard 的机器也被认为有。
另一个是 win-raid.com 论坛提供的 MEInfo 工具,它有各个 32/64 位 Windows 和 GNU/Linux 操作系统的版本,还有 DOS 版和 EFI 版。我看了下 Skylake 版本的检测工具,它的 GNU/Linux 版本的二进制居然没有去除符号,可以看到里面各个函数的名字。再结合 EFI 版本一起逆向,可以发现它是使用 HECI 查看 Secure Boot 的一些策略信息,来获得系统有没有使用 Verified/Measured Boot 这个信息的。并没有在里面看到有 rdmsr 指令的出现。
最后我考虑用 UEFITool NE 来看 flash 里面的固件。我从 laboneinside.com 那里下了不少 ROM,之前听说 Dell Latitude E7240 没有 Boot Guard,但是用 UEFITool 打开 E7240 的 ROM 之后发现有 Boot Guard,但是 Parser 却给了一个信息:
checkProtectedRanges: old AMI protected range [6F0000h:A65C00h] hash mismatch, opened image may refuse to boot
而 E7440 也是这样。最奇怪的是,用常压 Haswell CPU 的 E6440 也有这个现象,说明 AMI 可能对所有机器的固件都写入了 Boot Guard 的配置,但是不一定有启用。
此外我还看了几个 HP EliteBook 的固件,发现 840 G1 和 840 G2 似乎都没有 Boot Guard,我打算有时间入几个 EliteBook 试一下。
coreboot 社区以前收录了 intelmetool,它的 Boot Guard 检测是查看一个 CPU MSR 的值,但是这个方法恐怕不准确,有的没有 Boot Guard 的机器也被认为有。
另一个是 win-raid.com 论坛提供的 MEInfo 工具,它有各个 32/64 位 Windows 和 GNU/Linux 操作系统的版本,还有 DOS 版和 EFI 版。我看了下 Skylake 版本的检测工具,它的 GNU/Linux 版本的二进制居然没有去除符号,可以看到里面各个函数的名字。再结合 EFI 版本一起逆向,可以发现它是使用 HECI 查看 Secure Boot 的一些策略信息,来获得系统有没有使用 Verified/Measured Boot 这个信息的。并没有在里面看到有 rdmsr 指令的出现。
最后我考虑用 UEFITool NE 来看 flash 里面的固件。我从 laboneinside.com 那里下了不少 ROM,之前听说 Dell Latitude E7240 没有 Boot Guard,但是用 UEFITool 打开 E7240 的 ROM 之后发现有 Boot Guard,但是 Parser 却给了一个信息:
checkProtectedRanges: old AMI protected range [6F0000h:A65C00h] hash mismatch, opened image may refuse to boot
而 E7440 也是这样。最奇怪的是,用常压 Haswell CPU 的 E6440 也有这个现象,说明 AMI 可能对所有机器的固件都写入了 Boot Guard 的配置,但是不一定有启用。
此外我还看了几个 HP EliteBook 的固件,发现 840 G1 和 840 G2 似乎都没有 Boot Guard,我打算有时间入几个 EliteBook 试一下。