BIOS固件修复指南

1. 引言



1.1 基本输入输出系统

基本输入输出系统(英文:Basic Input Output System,缩写BIOS)是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。市面上较流行的主板BIOS主要有Award BIOS、AMI BIOS、Phoenix BIOS、Insyde BIOS 四种类型,此外还有国产百敖BIOS、昆仑BIOS。

1.2 统一可扩展固件接口

统一可扩展固件接口(英文:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。可扩展固件接口负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。

UEFI的前身是Intel在1998年开始开发的Intel Boot Initiative,后来被重命名为可扩展固件接口(Extensible Firmware Interface,缩写EFI)。Intel在2005年将其交由统一可扩展固件接口论坛(Unified EFI Forum)来推广与发展,为了凸显这一点,EFI也更名为UEFI(Unified EFI)。UEFI论坛的创始者是11家知名电脑公司,包括Intel、IBM等硬件厂商,软件厂商Microsoft,及BIOS厂商AMI、Insyde及Phoenix。

1.3 UEFI内部结构

1.3.1 物理存储布局

UEFI固件存储在Flash ROM芯片中,其分区布局比传统BIOS更复杂,通常包含以下区域:



描述符区:位于芯片起始位置,由Intel管理引擎使用,定义了芯片区域的访问权限(如读/写锁定)。
管理引擎区:运行独立的Minix操作系统,负责电源管理、安全启动等底层任务,与主CPU并行运行。
GbE区域:存储网卡MAC地址和网络配置参数。
BIOS区域:存储实际的UEFI固件代码,也就是我们通常说的"BIOS芯片"内容,分为多个卷。

1.3.2 固件文件系统

UEFI固件在逻辑上被组织为固件文件系统。整个固件存储区被划分为多个固件卷,每个卷包含一系列固件文件:

固件卷:类似于硬盘分区,有头部描述符标识其类型和大小。
固件文件:每个文件都有唯一的GUID标识,包含不同类型的代码或数据。例如,DXE驱动是一个文件,PEIM也是一个文件。

文件类型:

SEC核心:第一阶段的安全验证代码。
PEI核心:内存初始化前的核心服务。
DXE核心:驱动执行环境的核心调度器。
UEFI驱动:各种硬件驱动程序。
UEFI应用:如Shell、BIOS设置界面。

1.4 融合安全和管理引擎

英特尔融合安全和管理引擎(英文: Intel Converged Security and Management Engine,缩写CSME) 是英特尔芯片组中的一个独立于CPU和操作系统的微处理器。它运行在一个轻量级的微内核操作系统上,为基于英特尔处理器的计算机系统提供各种功能和服务。

CSME固件通常存储在主板上的BIOS/UEFI SPI闪存芯片中,但它在逻辑上与主系统的BIOS/UEFI固件分离,并独立运行。CSME是Intel平台的安全核心,负责系统的底层管理、安全和远程控制功能。它与AMD的PSP类似,但设计更复杂,功能更广泛。

1.5 平台安全处理器

AMD平台安全处理器(英文:AMD Platform Security Processor,缩写PSP)是自2013年起集成在AMD CPU和APU中的独立安全子系统,基于ARM Cortex-A5架构。与英特尔的管理引擎不同,PSP直接嵌入CPU芯片中。

PSP固件与CSME固件一样,存储在主板BIOS/UEFI SPI闪存芯片中,启动时优先加载,并拥有高级权限。PSP是AMD平台的安全核心,负责系统安全、加密和硬件管理。

2. BIOS刷写

编程器刷写BIOS指南



使用编程器刷写BIOS是一种可靠的方法,特别是当主板无法正常启动或BIOS损坏时。

2.1 所需工具

1、BIOS编程器(如CH341A、RT809F/H等)。
2、SOP8/SOP16夹子(免拆芯片)或烧录座(需热风枪拆焊芯片)。
3、对应主板的BIOS文件(从官网下载或备份好的)。
4、镊子、防静电手环等辅助工具。

2.2 BIOS文件获取

1、从主板厂商官网下载对应型号的BIOS文件。
2、从正常工作的同型号主板上备份BIOS。

2.3 操作步骤

2.3.1 免拆芯片刷写(使用夹子)

1、关闭电脑电源并拔掉所有连接线。
2、找到主板上的BIOS芯片(通常为8脚或16脚)。
3、将编程器夹子正确连接到BIOS芯片上(注意方向)。
4、连接编程器到电脑USB接口。
5、打开编程器软件,选择正确的芯片型号。
6、先读取并备份当前BIOS(重要!)。
7、擦除芯片内容。
8、写入新的BIOS文件。
9、校验写入是否成功。
10、断开连接,重新组装电脑。

2.3.2 拆焊芯片刷写

1、使用热风枪或焊台拆下BIOS芯片。
2、将芯片正确放入编程器插座。
3、后续步骤同免拆方法的5-9步。
4、将芯片焊回主板。

2.4 注意事项

1、静电防护:操作前佩戴防静电手环。
2、芯片方向:务必确认芯片和夹子的方向正确。
3、文件匹配:确保BIOS文件与主板型号完全匹配。
4、备份优先:刷写前一定要先备份原BIOS。
5、供电稳定:确保编程过程中供电稳定。

2.5 常见问题解决

1、识别不到芯片:检查连接是否牢固,尝试更换夹子或直接焊接。
2、校验失败:可能是芯片损坏或接触不良,尝试重新操作。
3、刷写后不启动:检查BIOS文件是否正确,或尝试其他版本。

2.6 编程器推荐

1、入门级:CH341A(性价比高)。
2、专业级:RT809F/H(功能全面)。
3、工业级:Xeltek SuperPro系列。

3. HxD使用

HxD软件使用指南



HxD是一款常用的十六进制编辑器,主要用于查看、编辑和分析二进制文件(如磁盘、内存镜像、程序文件等)。

3.1 基本操作

3.1.1 打开文件

1、点击File → Open,选择目标文件(如 .exe、.dll、图片、磁盘等)。
2、支持直接拖拽文件到窗口打开。

3.1.2 编辑数据

1、修改十六进制值:直接点击对应位置的十六进制数值,输入新值(如将00改为FF)。
2、修改文本:在右侧文本预览区直接修改字符(需注意编码格式,如 ASCII/Unicode)。
3、保存文件:编辑后点击File → Save(修改系统文件需管理员权限)。

3.1.3 常用功能

1、搜索数据:按Ctrl+F,输入十六进制值或文本字符串(支持Unicode/ASCII)。
2、跳转地址:按Ctrl+G,输入偏移地址(如1000)快速定位。
3、选择数据:按Ctrl+E,输入起始位置和结束位置。
4、复制数据:选中需要复制的数据后,按Ctrl+C。
5、剪切数据:选中需要剪切的数据后,按Ctrl+X。​​​​​
6、插入数据:复制需要插入的数据后,按Ctrl+V。
7、覆盖数据:复制需要覆盖的数据后,按Ctrl+B。

3.2 高级功能

3.2.1 磁盘编辑

1、点击File → Open Disk可直接编辑物理磁盘或分区(谨慎操作,可能导致数据丢失!)。
2、适用于数据恢复、分区表修复等场景。

3.2.2 校验与哈希

1、点击Analysis → Checksum计算文件的校验和(如CRC32、SHA-1)。
2、点击Analysis → Hash生成哈希值(如MD5)。

3.2.3 数据对比

通过Tools → File Compare对比两个文件的差异(显示不同处的十六进制偏移)。

3.3 注意事项

1、备份文件:编辑前务必备份原文件,误操作可能导致文件损坏。
2、权限问题:编辑系统文件需以管理员身份运行HxD。
3、磁盘编辑风险:直接修改磁盘/分区可能导致系统崩溃,非专业人士慎用。

3.4 应用场景

1、逆向工程:分析二进制程序结构。
2、数据恢复:修复损坏的文件头或删除的数据。
3、教学研究:学习文件格式(如PE文件、图片头等)。

4. BIOS提取

BIOS固件更新提取指南

不同厂商和型号的设备BIOS文件格式各异,需要采用不同的提取方法。

4.1 工具准备

1、UniExtract:用于提取7z打包BIOS。
2、InnoExtractor:用于提取Inno打包BIOS。
3、UEFITool:用于解析和编辑BIOS固件文件。

4.2 提取方法

4.2.1 7z打包BIOS提取方法

1、官网下载的BIOS文件为exe格式(7z打包)。



2、打开UniExtract.exe主程序。



3、在工具的界面中,浏览并选中需要提取的BIOS更新文件。



4、点击“确定”或“ok”按钮,工具就会自动分析并解包。



5、提取完成后,在输出文件夹中寻找体积较大、扩展名为.bin、.rom、.fd或.cap的文件。



4.2.2 Inno打包BIOS提取方法

1、官网下载的BIOS文件为exe格式(Inno打包)。



2、打开InnoExtractor软件。



3、在工具的界面中,浏览并选中需要提取的BIOS更新文件。



4、在文件列表中,找到体积最大的.bin、.rom或.cap文件。



5、选中该文件,点击工具栏上的提取或Extract按钮。



6、选择输出文件夹,确定后即可得到提取后的BIOS固件。



4.2.3 Capsule 打包BIOS提取方法

1、官网下载的BIOS文件为.cap格式(Capsule打包)。



2、运行UEFITool,将你需要处理的.cap文件直接拖入软件窗口。



3、在软件左侧的“Image”结构树中,找到并右键点击名为"AMI Aptio capsule"的条目。



4、在弹出的菜单中,选择"Extract body"(提取主体)。



5、将提取出的新文件保存为.rom或.bin格式。



4.3 注意事项

1、不同厂商的BIOS结构差异很大,需选择合适的工具。
2、提取过程中要确保数据完整性,错误的提取可能导致刷写失败。
3、部分OEM BIOS提取后,还需继续分离或合成。
4、必要时需拷贝原机备份BIOS文件的DMI信息。
5、修改BIOS有风险,操作前务必做好备份。

5. ME/TXE清洁

ME/TXE固件清洁与配置指南

需要清洁ME/TXE的情况包括:ME/TXE区域损坏、亮机缓慢、风扇狂转、无法自检、无法识别硬盘、驱动无法安装、30分钟自动关机、更换PCH或CPU、无法进入Mac OS等。

5.1 工具准备

1、Flash Image Tool (FIT):用于解包和重新打包BIOS文件,修改ME配置。
2、ME Analyzer:用于分析ME/TXE固件的状态(如已初始化、未配置或已配置)。

5.2 ME状态分析

1、Initialized(已初始化):原机备份的BIOS或已通电的BIOS。
2、Unconfigured(未配置):修复ME固件后未重新配置的BIOS。
3、Configured(已配置):修复并正确配置后的BIOS,可直接使用。

5.3 配置方法

1、使用ME Analyzer检查ME状态:确保BIOS的ME状态为"已初始化"或"未配置",这两种状态需要进一步配置。



2、打开FIT,在工具栏选择File → Open打开或拖入需要清理的SPI BIOS文件。



3、在工具栏选择Build → Build Settings,将Generate Intermediate Files选项中的Yes改为No。



4、在工具栏选择File → Save,点击Save保存配置文件Untitled.xml,关闭FIT。



5、使用纯净ME替换Decomp文件夹下的原始ME文件(如ME Region.bin或ME Sub Partition.bin)。



6、再次打开FIT,在工具栏选择File → Open,然后选择之前保存的配置文件Untitled.xml并打开它。



7、在工具栏选择Build → Build Image构建映像。



8、FIT文件夹下就会生成一个outimage.bin或image.bin文件。



9、使用ME Analyzer检查outimage.bin或image.bin文件的ME状态是否为Configured,确保可正常刷入主板。



注:如果填充了“OEM公钥哈希”,还需使用OpenSSL工具创建虚拟/占位符RSA私钥才能进行配置。

5.4 ME类型与配置选项

1、Consumer(消费类):保留基本功能。
2、Corporate(企业类):保留完整功能。
3、Slim(超薄型):仅保留最小功能。
4、PCH-H(高性能) 和 PCH-LP(低功耗):需根据主板芯片组选择。
5、PDM(Power Down Mitigation,掉电缓解):YPDM(已启用)和NPDM(未启用)。

5.5 注意事项

1、ME/TXE固件修改可能影响主板稳定性,错误的配置可能导致无法开机。
2、部分工具(如FIT)不支持中文路径或文件名,需确保路径为英文。
3、对于魔改BIOS(如6/7代主板支持8/9代CPU),还需调整ME版本和微码。

6. NVRAM清除

NVRAM变量清除指南

NVRAM(Non-Volatile Random Access Memory,非易失性随机存取存储器)存储了BIOS/UEFI设置、硬件配置和系统关键数据。如果NVRAM损坏或数据异常,可能会导致多种问题。

需要清除NVRAM的情况包括:NVRAM变量损坏、硬件丢失、开机报错、卡LOGO、开机黑屏、循环重启、存储在NVRAM变量中的密码清除等。

6.1 工具准备

1、UEFITool:用于解析和编辑BIOS固件文件。
2、HxD:十六进制编辑器。

6.2 清除方法

1、使用编程器备份需要清除NVRAM的BIOS文件。



2、使用UEFITool打开BIOS文件并找到NVRAM模块。



3、展开NVRAM模块并找到其中的VSS/VSS2(可变存储服务)区域。



4、使用HxD打开BIOS文件并选择VSS/VSS2区域的主体部分。



4、将VSS/VSS2区域的主体部分填充为00或FF(一般情况下只需填充第一个VSS/VSS2区域即可)。



5、保存修改后的BIOS文件并使用编程器刷入主板。



6.3 注意事项

1、风险提示:错误的修改BIOS文件可能导致设备无法启动,需谨慎操作。
2、备份文件:修改BIOS有风险,操作前建议备份原始BIOS文件。
3、主板差异:不同品牌的主板可能采用不同的NVRAM管理方式,需根据实际情况而定。