mytbk/firmware_notes

惠普zbookg1系列的BIOS可以用这种方法去校验嘛

iamOJZ opened this issue · 17 comments

大佬你好,我在用uefitool解包我zbookg1的BIOS后发现也有SecureUpdating的PEI模块(有两套PEI卷,我感觉是作为备份用的),不知道能不能用您的方法去弄掉校验,因为vbios集成在bios里想修改得弄掉校验。bios是官网最新版本

mytbk commented

ZBook G1应该有HP Sure Start. 你可以参考一下 https://review.coreboot.org/c/coreboot/+/45577
你当然可以先尝试删这个模块,如果HP Sure Start在这个机器上存在的话,估计会把整个PEI区域恢复回原样,你用编程器再读一次就可以验证。
如果这个办法在这个机器上能用的话,就意味着你会把机器的Machine Unique Data都去掉,同时由于你要改IFD缩小BIOS区域,你可能还需要用me_cleaner砍掉部分ME固件为BIOS留出空间。在这些事情做完之后,才能再考虑改BIOS区域的问题。

mytbk commented

我手上那台Haswell的EliteBook直接就移植coreboot了,还没尝试这样改原厂固件。

ZBook G1应该有HP Sure Start. 你可以参考一下 https://review.coreboot.org/c/coreboot/+/45577
你当然可以先尝试删这个模块,如果HP Sure Start在这个机器上存在的话,估计会把整个PEI区域恢复回原样,你用编程器再读一次就可以验证。
如果这个办法在这个机器上能用的话,就意味着你会把机器的Machine Unique Data都去掉,同时由于你要改IFD缩小BIOS区域,你可能还需要用me_cleaner砍掉部分ME固件为BIOS留出空间。在这些事情做完之后,才能再考虑改BIOS区域的问题。

嗯,我去试试看,原机BIOS已经用编程器备份过了,ME居然占了8M空间。HP Sure Start这个功能有点高级,那个教程没看懂

mytbk commented

你需要仔细找找有没有另外一块flash芯片。一个比较简单的做法是先用ifdtool -u解锁IFD(原厂固件一般都锁的),刷入解锁IFD的固件,之后启动计算机,再读一次flash,看看IFD区域(前4K)是不是没变。如果没变的话就说明IFD被恢复了,很可能就是从另一块flash恢复的。

mytbk commented

不过直接改PEI区域也足够检验这件事了。

果然,改了PEI之后开机显示“共享SPI已从嵌入式设备中恢复”。还有想请教一下,如何在有校验保护BIOS里找到相应的校验模块,在atom z8300上的AMI bios居然是带校验的,网上又没有相关的教程去破解

mytbk commented

我也不知道怎么找。当初我是看名字觉得哪个可疑就删哪个。

看了下主板原理图,找不到第二个SPI FLASH,只有一个2M大小的EC ROM
还有老外那个去sure start的教程没看懂要改哪

mytbk commented

那个所谓的EC ROM就是private flash.
我之前见过一些拆机图,看起来是在键盘下面。

mytbk commented

另外感兴趣的话可以移植一下coreboot. 移植的时候可以用 Haswell autoport (https://review.coreboot.org/c/coreboot/+/30890) ,并参考一下 EliteBook Folio 9480m 怎样处理 EC 的初始化。
我现在发现有些 Haswell 的设备用现有的 coreboot 代码和 mrc.bin 初始化内存不太正常,不知道 ZBook 是不是这样。

谢谢大佬的意见,放假后我去研究下,coreboot的话没接触过得慢慢了解

JB@XXC$ 43LCQ7TT 2)G4
这个2M的EC ROM居然是uefi结构的,正如大佬说是private flash,里面有一套微码和一套PEI。我在想如果把里面的PEI改动不知道能不能实现彻底去校验。

mytbk commented

那些微码PEI实际上是16M system flash的相应内容的一个备份,这是给Sure Start用的。
现在还不清楚Sure Start用了什么校验算法验证这些内容的有效性,所以最简单的方法是直接把整块2M的flash擦除。这是绕过Sure Start的第一步。(IFD, GbE, MUD, ucode, PEI 的校验和自动恢复)
第二步是改IFD,这是因为EC固件还会对PEI区域做数字签名校验,所以要把BIOS区域前移。要验证EC固件会不会校验PEI,可以尝试在第一步之后,再次修改PEI区域,如果这时候无法给机器上电,那就是EC固件检测了PEI区域被修改而拒绝启动。

目前我还不知道对原厂固件做这些修改的效果,理论上可以用me_cleaner缩小ME区域,留出空间用于把BIOS区域移到前面。

coreboot文档HP Sure Start: https://doc.coreboot.org/mainboard/hp/hp_sure_start.html
HP EliteBook Folio 9480m的coreboot刷写流程: https://doc.coreboot.org/mainboard/hp/folio_9480m.html#programming

回家我试试改原厂固件,实在不行就移植coreboot,这EC的校验是有点*,只校验特定区域。还有缩小ME后,不知道PEI对dxe部分的校验有没有影响。

查了下资料,部分带mec1322的机器拆掉2M flash后不影响开机,EC固件貌似在PEI卷的靠后的地址中,不知道能不能硬改干掉HP sure start

mytbk commented

拆掉2M flash这个做法我没试过,不知道会不会改变EC固件的行为。
作为参考,Haswell这代的EliteBook有Sure Start,但是ProBook 640 G1没有,它们的EC固件很相似,而ProBook 640 G1只有一块flash.