zoukankan      html  css  js  c++  java
  • 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。

    另,编程器真香

  • 相关阅读:
    POJ2778 DNA Sequence AC自动机上dp
    codeforces732F Tourist Reform 边双联通分量
    codeforces786B Legacy 线段树优化建图
    洛谷P3588 PUS 线段树优化建图
    codeforces1301D Time to Run 模拟
    codeforces1303B National Project 二分或直接计算
    codeforces1303C Perfect Keyboard 模拟或判断欧拉路
    codeforces1303D Fill The Bag 二进制应用+贪心
    python之路——使用python操作mysql数据库
    python之路——mysql索引原理
  • 原文地址:https://www.cnblogs.com/B1ue/p/8461720.html
Copyright © 2011-2022 走看看