craigsblackie/Dell_UEFI_Patcher
GitHub: craigsblackie/Dell_UEFI_Patcher
一款 Dell UEFI BIOS 精准修补工具,通过解析 FIT 表定位 Intel Boot Guard 保护范围,确保补丁仅应用于安全区域以避免触发验证失败。
Stars: 8 | Forks: 0
# Dell BIOS 精准修补工具 (IBB-Safe)
一款专用的 Python 实用工具,旨在对 Dell UEFI BIOS 二进制文件进行精准修改。该工具可自动发现受 **Intel Boot Guard (BtG)** 保护的区域,并识别需要修改的特定 VarStore (Setup) 偏移量,确保补丁仅应用于闪存的“安全”(未验证)区域。
创建此工具的主要目的是在不需要 UEFI BIOS 密码或触发恢复密钥要求的情况下禁用 pre-boot DMA。旨在作为 https://github.com/PN-Tester/DMAReaper 的配套工具。
它已在配备 UEFI 版本 1.23.2 和版本 1.32.1(测试时的最新版本)的 Dell Optiplex 3000 上成功测试。该补丁甚至在一次官方的 Dell Update 后依然保留生效。
这是通过“直觉编程 (vibe-coded)”完成的,对我个人有效,但您的情况可能有所不同 (YMMV)。
## 🛡️ “安全性”问题
现代 Dell 系统采用了 Intel Boot Guard。CPU 会在执行前验证 **Initial Boot Block (IBB)** 的哈希值。即使修改该范围内的一个 bit,也会导致验证失败,从而导致设备无法开机或无法 POST)。
此工具通过以下方式解决此问题:
1. **以编程方式解析 FIT**(Firmware Interface Table),以找到*您特定*转储文件的精确 IBB 边界。
2. 在写入之前,针对这些边界**验证每个补丁地址**。
3. 仅在用户明确承认变砖风险的情况下,**提供“强制”覆盖选项**。
## ✨ 主要特性
* **与大小无关:** 适用于 8MB、16MB、32MB 和 64MB 的全闪存转储文件。
* **FIT 发现:** 自动定位 `_FIT_` 签名并解析 Type 0x07 (IBB) 条目。
* **精准搜索:** 使用 GUID + Name 签名(默认:`Setup`)扫描 VarStore 头部。
* **依赖映射:** 专门配置为定位“IOMMU Pre-boot Behavior” bit(偏移量 `0x812`),这对于禁用 DMA 保护至关重要。
## 🚀 用法
### 1. 分析模式(安全)
扫描 BIOS 转储文件,查看设置所在的位置以及修补是否安全:
```
python3 dell_bios_patcher.py bios_dump.bin
```
通常会有多个匹配项,我发现通常只需要修补其中一个,但全部修补也没有给我带来任何问题。
### 2. 应用补丁
在安全区域中生成一个禁用该设置(设置为 `0x00`)的新二进制文件:
```
python3 dell_bios_patcher.py bios_dump.bin patched.bin --apply
```
### 3. 高级自定义
通过提供自定义的十六进制字符串来定位不同的设置或 GUID:
```
python3 dell_bios_patcher.py dump.bin --guid --offset 0x45F --name
```
## 🛠️ 技术细节
该工具采用多种策略来定位 FIT:
1. **架构指针:** 检查相对于文件大小的 `4GB - 0x40` 位置(全闪存转储文件的标准位置)。
2. **签名搜索:** 如果指针丢失或模糊,则扫描二进制文件以查找 `_FIT_ ` 魔术字符串。
一旦识别出 IBB 范围(FIT Type 0x07),脚本就会将 UEFI 内存地址(例如 `0xFFF60000`)映射回转储文件中的物理文件偏移量,从而为补丁创建一个“禁飞区”。
## ⚠️ 免责声明
**警告:** BIOS 修改本身具有风险。虽然此工具包含防止触发 Intel Boot Guard 的安全检查,但它无法保证修改后的 BIOS 逻辑能按预期运行。在进行操作之前,请务必准备好硬件编程器(如 CH341A)以及经过验证的原始转储文件备份。
标签:BIOS修改, Python, UEFI, 固件安全, 无后门, 系统底层, 逆向工具