去除HP机器的固件保护
发表于 : 2017年 5月 14日 13:04 星期天
https://github.com/mytbk/firmware_notes ... ection.rst
之前的测试发现,HP的固件对DXE阶段的那个volume有保护,如果改写了它机器就拒绝启动。但是PEI阶段是没有保护的,很多PEI模块都可以删掉。因此我打算删掉一部分PEI模块精简一下固件,再看看对固件进行保护的代码在哪里。
之后我发现,精简过的固件没有了对固件的保护,即使删掉一个DXE模块也不会让机器变砖,于是我便找找是哪个PEI模块对固件做了检查。经过测试,我发现是那个称为SecureUpdating的模块。
这个模块在固件中是放在一个compressed section里面的,完整的模块大小有30k,逆向比较繁琐,我也没耐心做这个事。我简单地看了一下这个模块,发现里面有几个SHA1的常数,再加上之前在固件里面发现了一段2048bit的数据(2760p-coreboot.rst),猜测可能是对要检查的数据做SHA1散列后签名,感兴趣的朋友们可以分析一下。
白名单去除
我去除固件保护的目的是为了可以修改里面的UEFI模块,从而可以更好地看清原厂固件执行了哪些关键代码,然后完善coreboot对HP机器的支持。
之后发现HP固件的白名单也很好去除,直接把DXE Core里面那个叫WLAN的模块删掉就行了。启动后发现系统不再提示有未认证的无线网卡并禁用,进入系统后网卡正常工作。
------------
https://forum.51nb.com/thread-1751735-1-1.html
xx70p之前的机器都有WLAN网卡白名单,而且HP的笔记本的固件都会检测自身一部分的完整性,这个方法先去掉了固件自身的保护,然后就可以修改固件了。
我的测试平台: 2760p+Linux Mint+AR9382网卡
具体操作过程:
1. 用编程器读出原固件的内容
2. 用UEFITool打开读出的固件,删掉SecureUpdating模块,要去除WLAN白名单则删掉WLAN模块,类似的可以删掉Computrace,WWAN等
3. 保存修改后的固件,用编程器刷进机器的BIOS芯片
之前的测试发现,HP的固件对DXE阶段的那个volume有保护,如果改写了它机器就拒绝启动。但是PEI阶段是没有保护的,很多PEI模块都可以删掉。因此我打算删掉一部分PEI模块精简一下固件,再看看对固件进行保护的代码在哪里。
之后我发现,精简过的固件没有了对固件的保护,即使删掉一个DXE模块也不会让机器变砖,于是我便找找是哪个PEI模块对固件做了检查。经过测试,我发现是那个称为SecureUpdating的模块。
这个模块在固件中是放在一个compressed section里面的,完整的模块大小有30k,逆向比较繁琐,我也没耐心做这个事。我简单地看了一下这个模块,发现里面有几个SHA1的常数,再加上之前在固件里面发现了一段2048bit的数据(2760p-coreboot.rst),猜测可能是对要检查的数据做SHA1散列后签名,感兴趣的朋友们可以分析一下。
白名单去除
我去除固件保护的目的是为了可以修改里面的UEFI模块,从而可以更好地看清原厂固件执行了哪些关键代码,然后完善coreboot对HP机器的支持。
之后发现HP固件的白名单也很好去除,直接把DXE Core里面那个叫WLAN的模块删掉就行了。启动后发现系统不再提示有未认证的无线网卡并禁用,进入系统后网卡正常工作。
------------
https://forum.51nb.com/thread-1751735-1-1.html
xx70p之前的机器都有WLAN网卡白名单,而且HP的笔记本的固件都会检测自身一部分的完整性,这个方法先去掉了固件自身的保护,然后就可以修改固件了。
我的测试平台: 2760p+Linux Mint+AR9382网卡
具体操作过程:
1. 用编程器读出原固件的内容
2. 用UEFITool打开读出的固件,删掉SecureUpdating模块,要去除WLAN白名单则删掉WLAN模块,类似的可以删掉Computrace,WWAN等
3. 保存修改后的固件,用编程器刷进机器的BIOS芯片