Iru Cai
Iru Cai
商务本EliteBook/ProBook和家用本不是一系列,设计都不一样。 保护模块我是通过尝试删不同的模块的方法发现的。
点了一下你给的官网固件升级的链接,发现连Windows更新包的结构都不一样。EliteBook的更新程序exe文件用unar可以直接解包出ROM的文件,这个用unar解包之后居然是出了另一个exe文件。
另外还有一个问题。SecureUpdating是个PEI模块,而Haswell开始的EliteBook改用MEC1322 EC之后,使用了一个叫Sure Start的技术,会对IFD,GbE,PEI(romstage),SEC(bootblock)这几个部分做检验,修改固件可能会变得更加困难。不知道家用本会不会用这项技术。
> > 点了一下你给的官网固件升级的链接,发现连Windows更新包的结构都不一样。EliteBook的更新程序exe文件用unar可以直接解包出ROM的文件,这个用unar解包之后居然是出了另一个exe文件。 > > 对的,然后那个程序相当于旧的insyde刷新程序套了个壳,用压缩软件可以打开,里面有3个FD文件(bios文件)……那个不用管了,您稍等,我有用ch341a备份的bin文件,我传一下! 哦,我用7za解出来了。
不知道。操作时记得备份固件(读取flash两次并比较是否相同,用UEFITool看看是不是真的是个Intel平台的固件)。以及X240有BootGuard,不知道会允许多大的修改。
刚刚又看了一下,大概明白 LenovoWmaPolicyDxe 的工作原理了,大致是安装一个 Protocol,然后 LenovoWma{Pci,Usb}Dxe 调用了这个 Protocol 里面的一个过程来检测 PCI/USB 设备的 ID,要做一个细粒度的修改来跳过白名单检测应该也很简单了。 当然了,网上流传的用 UEFIPatch 修改固件的那个 txt 文件的 LenovoWmaPolicyDxe 就是这么修改的。 至于这个联想自定义的 Protocol,也就这3个模块用了..... GUID pattern "4212a9d4-4a92-....-....-............" found as "D4A91242924AFB4BB47F2734355F54AC" in PE32 image section...
我看了一下那个脚本,在UEFITool看我从一台X230里面备份出来的固件,可以找到一个含有IBMSECUR的文件,其实我觉得可能对其他机型的固件也是可以的。 不过我的思路是首先考虑删除某些模块,然后看缺少某模块对于机器功能的影响,这是我现在分析原厂UEFI固件的方法。我搜索另一个字符串"TCPA",可以发现在 LenovoTcgServicesDxe.efi, LenovoOemSecPei.efi (这个模块在我的X230的原厂固件里出现了2次) 里面有这个字符串,可以考虑删掉它们看看。
刚刚写了篇后续的文章 https://github.com/mytbk/firmware_notes/blob/master/thinkpad/tp-whitelist.rst
白名单检测的那个模块的分析和我昨天写的一样。他的做法是把访问白名单数据之后的3个条件转移指令都改了,je改成jmp,jne改成nop(他的改法是改了转移目标为下条指令,相当于把指令变成了nop). 高级选项的修改是改了 SystemFormBrowserCoreDxe. 这个修改是把一个地方的16个字节替换成了另外16个字节,这16个字节有可能是GUID,也有可能是什么配置信息,而且我暂时没找到相关的交叉引用。 查看两个UEFI固件的差别可以用这个方法: 1. 用UEFIExtract提取固件的所有内容 2. 对其中所有的body.bin做个hash: find x240.bin.dump/ -name body.bin -exec md5sum {} + > md5sums.txt.1 3. 对修改后的固件做同样的操作,然后vimdiff查看两份hash信息
Now it can boot with one CPU, but can't boot with two CPUs. Maybe the PSU has a bug, a new one will be arrived.