Open Yangff opened 7 years ago
一般就是数字签名吧,弱一点的话就是只有散列。
@mytbk 主要是我把整个Flash Bios的流程看了一遍,似乎没有签名相关的代码,以及针对签名错误的错误信息…… 除了一个比较奇怪的Oem check……
主要是窝不知道啥时候手贱升级了bios,现在刷只能看到ERROR 182 - BIOS image is equal or older than ROM!
flash的流程是怎样的? 我对私有刷写协议不了解,只会用flashrom.
好吧,我可能找到了…… 藏得真深……
@mytbk 在我这里是这样的,各个平台上的winflash最后会调用到SystemFlashUpdateDriverDex的+448这个函数,这部分具体的原理我不大清楚,反正那个模块最后会调用到这个函数上
然后显示各种欢迎信息,帮助什么的……
如果参数是write或者embedded_microcontroller (em)的话,大概不是这个模块负责的,会走一个和正常刷写无关的流程。
否则的话,会开始读当前的flash module
然后开始读当前的(读出来的)bios的信息,build date time,build date time info,SMBIOS information什么的,还有是否允许rollback
然后是读取参数并且根据参数做的一系列合法性检查。
然后开始读要写入的image
然后取出要写的那部分
然后又是一堆检查,各个参数的合法性检查,从错误号来看都不大重要……
比较让人注意的就是一个security_bios的全局变量,(因为我没有刷成功过改过的)我不知道刷改过的bios会出什么错,但是这个属性会导致Error 233,Only secured capsule is allowed on a SecureFlash system
, 但是这玩意又只是检查了一些属性,并没有实际意义……
然后就是实际flash的流程……
在我这里是+0EEA9,这里对flash做了进一步校验,SecureFlash verification fail
就是它产生的反正,以及往esp分区写入.cap
数据
其中SecureFlash verification fail
, 具体是+0E8BB这个函数搞出来的,如果这个就是签名校验失败时候的错误的话就是在这里面了…… (但这里面好像也只有校验…… 可能我看错了吧)
听说刷的时候会有RSA校验,又不想撸下来刷,于是就想看看它的校验是怎么做的。但是SystemFlashUpdateDriverDex里面并没有和RSA校验有关的代码好像…… 至少我没有看到明显是Bignum之类的东西…… 能问一下现在新的bios直接刷改过的是会什么校验失败?还是别的什么原因导致一定要硬刷?