• Insyde BIOS@G50-80 继续研究


    继续研究发现,计算机的固件真的很有趣。参考了一些重要的资料,比如 http://donovan6000.blogspot.com/2013/06/insyde-bios-modding-advanced-and-power-tabs.html 等,对于IDA的使用也了解了一些。最后,总结一下目前看来可行性的方案:

    0. 基础知识储备,包括UEFI BIOS的概念,Insyde BIOS的结构,IDA逆向的基本知识,BIOS-MOD、MDL上关于BIOS修改的基本知识等

    明确:本文针对UEFI BIOS尤其是联想平台的某些版本的Insyde BIOS。

    BIOS(主要)储存在FLASH芯片中,(相关芯片不止一颗)。通过SMM模式下的SMI指令可以进行读写,通过SPI烧写工具也可以直接进行物理读写。

    BIOS变量储存在Nvram里面。

    计算机的固件不仅包含BIOS,还有ME、EC等等部分。这些部分在正常的BIOS升级时会一并更新。但是在手动更新时往往关注其中主要的BIOS部分,(某些情况会关心ME,比如超频、解锁、以及最近的漏洞),这些部分的刷新方式、工作方式、储存位置、读写指令、恢复方式、读写性各不相同。

    不同厂商的UEFI BIOS实现各具特点,而且指令有很大的不同,这些都是没有公开的资料的!

    BIOS版本、主板版本、刷写程序版本需要对应才能成功刷入。一般来说刷写程序可以向下兼容。Insydeflash(Insyde的刷写程序)不能向下兼容,必须和BIOS版本对应。

    对我自己的这个平台和BIOS版本来说,(ACLU3/4 ,Insyde BIOS),厂商的更新文件后缀名fd,包含了BIOS、ME等内容。dump出来的时bin格式,只包含BIOS(?)。在WIN平台下,读写性(正常引导后,UEFI出于安全考虑会锁柱某些区域(Region),使得无法通过指令读出、修改、写入)。我自己的平台上,读写性如下:

    BIOS access table:

    Read Write

    Desc Yes No

    BIOS Yes Yes

    ME No No

    GbE Yes Yes

    PDR No No  

    read意味着可以在WIN平台下dump出来(备份),write意味着可以在WIN平台下normal flash进去。

    WIN平台下刷写方式主要为secure flash(安全刷写)和normal flash(手动刷新、强制刷新)

    secure flash即(?)capsule方式刷新,所有的内容都可以刷进去,但capsule本身有签名,很难修改。

    normal flash即传统的BIOS刷新,直接读写允许write的区域,逐字节写入flash,似乎可以绕过检验(未验证)

    1. 从官网下载BIOS升级文件,通过安装、7-zip等方式想办法分离出刷写程序:Insydeflash.exe,platform.ini,iscflash.dll等文件。以及官方升级文件bioss.fd备用

    2.修改Platform.ini文件,利用Insydeflash程序备份出现有的BIOS文件dump.bin

    3. 使用Andy's Phoenix Tool或UEFITool工具解压并分析dump文件,找到需要修改的部分,使用IDA等工具修改好,重新打包/替换回fd文件

    4.修改Platform.ini和Insydeflash.exe文件,强制使用normal flash模式,只刷写BIOS区域,刷入修改后的dumo文件

    5. 重启验证

    (待续)

    6. 研究capsule签名的原理,想办法替换签名根。解析出fd文件结构,找到签名、打包的方法。完美解决secure flash问题

    相关文件后续有空发到GitHub上去,待续

    EOF

    后续:验证太强,即使破解了flash程序,capsule还有一层验证,这个无解,除非找到bypass。

    另,编程器真香

  • 相关阅读:
    923c C. Perfect Security
    hdu ACM Steps Section 1 花式A+B 输入输出格式
    我回来了
    POJ–2104 K-th Number
    bzoj1009: [HNOI2008]GT考试
    bzoj1875: [SDOI2009]HH去散步
    1898: [Zjoi2005]Swamp 沼泽鳄鱼
    Hadoop
    程序员的自我修养
    Effective C++笔记
  • 原文地址:https://www.cnblogs.com/B1ue/p/8461720.html
Copyright © 2020-2023  润新知