Leksa667/Rainbow-Dragon---UEFI-Hardware-Analyzer
GitHub: Leksa667/Rainbow-Dragon---UEFI-Hardware-Analyzer
Rainbow Dragon 是一个运行在 UEFI 预启动环境中的硬件和固件分析工具,提供 SMBIOS/ACPI 表检查、内存映射查看、引导诊断以及带安全回滚机制的内存中测试修改功能。
Stars: 1 | Forks: 0
# Rainbow Dragon - UEFI 硬件分析器
Rainbow Dragon 是一个使用 GNU-EFI 编写的 UEFI 硬件和固件分析实用程序。
它直接在预启动的 UEFI 环境中运行,可在操作系统启动之前提供对固件公开系统数据的底层可见性。
该项目侧重于固件研究、硬件诊断、SMBIOS/ACPI 检查、UEFI 兼容性测试,以及带有备份、对比、确认和回滚保障的受控内存中 SMBIOS/ACPI 测试。
## 预览
## 概述
Rainbow Dragon 被构建为一个独立的 UEFI 应用程序:
```
DragonTool.efi
```
一旦从 EFI shell 或可引导的 FAT32 EFI 分区启动,它将打开一个基于文本的交互式界面,用于直接从 UEFI 检查系统固件数据。
该工具包括以读取为中心的诊断功能,以及受控的内存中 SMBIOS 和 ACPI 测试操作。可变操作需要确认,并旨在更改支持的字段之前保留原始备份。
## 功能
- 交互式 UEFI 菜单界面
- 系统概览屏幕
- SMBIOS 表检测、浏览和详细报告
- ACPI 表扫描和检查
- UEFI 内存映射查看器
- 引导环境诊断
- 固件、GOP 图形、运行时和引导服务信息
- 兼容性和固件能力检查
- 早期 UEFI/DXE 加载镜像扫描器
- 带确认提示的 SMBIOS 内存测试修补
- 在首次伪造操作前存储原始 SMBIOS 备份
- System UUID 备份、对比、伪造和恢复支持
- CPU 速率原始字段备份和恢复支持
- SMBIOS 修改前后对比视图
- 检测到内部 SMBIOS 修补错误时自动回滚
- 带有校验和验证的 ACPI DSDT/SSDT OEM 头部修补,并在校验和失败时立即回滚
- GNU-EFI Makefile 构建
- 支持 Windows/Linux 主机的 Docker 构建
- 通过 `startup.nsh` 提供的启动辅助脚本
## 近期更改
- 在 SMBIOS 和 ACPI 伪造操作前添加了确认提示。
- 在修补前添加了 SMBIOS 备份验证。
- 添加了 System UUID 备份、伪造、对比、恢复和回滚支持。
- 添加了 CPU 速率原始字段备份/恢复集成到默认恢复中。
- 添加了与保存的默认值进行修改前后的对比输出。
- 添加了检测到内部修补错误时的自动 SMBIOS 回滚。
- 添加了 ACPI 校验和验证,失败时立即回滚头部。
- 通过保持文本明亮并使分隔线变暗来改善 UI 可读性。
## 当前 SMBIOS 覆盖范围
Rainbow Dragon 可以检查并(对于受支持的内存中测试操作)修补以下选定的字段:
- Type 0:BIOS 信息
- Type 1:系统信息,包括 System UUID
- Type 2:主板信息
- Type 3:机箱信息
- Type 4:处理器信息和选定的 CPU 速率字段
- Type 7:缓存插槽字符串
- Type 8:端口连接器字符串
- Type 9:系统插槽指定字符串
- Type 10:板载设备字符串
- Type 11:OEM 字符串
- Type 13:BIOS 语言字符串
- Type 17:内存设备字符串字段
- Type 22:便携式电池字符串字段
- Type 39:电源字符串字段
- Type 41:板载扩展设备参考
- Type 43:TPM 设备描述
## 安全行为
Rainbow Dragon 在可变操作前后应用了多项安全保障:
- 智能 SMBIOS 伪造需要明确的确认。
- ACPI DSDT/SSDT 伪造需要明确的确认。
- 原始 SMBIOS 字符串值在首次 SMBIOS 修补之前被保存。
- 现有备份将被保留,不会被后续运行覆盖。
- System UUID 拥有独立的原始 16 字节备份和恢复路径。
- CPU 速率原始字段拥有独立的备份和恢复路径。
- `Show HWID Diff From Backup`(显示与备份的 HWID 差异)菜单将当前值与保存的默认值进行比较。
- 如果检测到内部 SMBIOS 修补错误,Rainbow Dragon 将立即恢复保存的默认值。
- ACPI 表头部在修补后进行校验和验证;校验和验证失败将立即恢复原始头部字段。
- 更改均在内存中进行,重新启动后应会重置,为支持恢复而存储在 UEFI NVRAM 中的备份变量除外。
## 可检查的内容
Rainbow Dragon 可以显示和分析如下信息:
- BIOS 和固件供应商数据
- 系统制造商、产品名称、序列号、SKU、系列和 UUID
- 主板信息
- 机箱信息
- CPU 信息
- 内存设备和内存阵列
- TPM SMBIOS 条目
- 通过 SMBIOS 公开的 PCI 和插槽信息
- ACPI 根表和 DSDT/SSDT 头部
- UEFI 系统表数据
- UEFI 运行时和引导服务可用性
- Graphics Output Protocol 信息
- UEFI 内存描述符
- 引导路径和加载的镜像信息
## 使用场景
此项目可用于:
- 固件和 UEFI 研究
- 调试 SMBIOS 或 ACPI 暴露情况
- 在 OS 引导前检查硬件身份数据
- 测试不同系统上的 UEFI 兼容性
- 学习固件表如何通过 UEFI 公开
- 构建自定义的预启动诊断工具
- 比较不同机器或 BIOS 版本之间的固件行为
## 构建
### Docker 构建
在带有 Docker Desktop 的 Windows 上:
```
.\scripts\docker-build.ps1
```
输出文件生成为:
```
build\DragonTool.efi
```
### 原生 GNU-EFI 构建
在安装了 GNU-EFI 的 Linux 环境上:
```
make
```
输出文件生成为:
```
build/DragonTool.efi
```
## 引导使用
将生成的 `DragonTool.efi` 复制到 FAT32 EFI 分区或 USB 驱动器。
示例布局:
```
/
|- DragonTool.efi
`- startup.nsh
```
包含的 `startup.nsh` 会启动:
```
DragonTool.efi
```
然后引导进入 EFI shell 并运行该工具。
## 致谢
Rainbow Dragon 是基于 Samuel Tulach 的 Negative Spoofer 项目的初始基础构建的。
特别感谢 Samuel Tulach 提供的原始 Negative Spoofer 项目,它构成了本项目的初始工作基础。
原始项目:
```
https://github.com/SamuelTulach/negativespoofer
```
## 免责声明
Rainbow Dragon 仅用于教育、诊断和固件研究目的。
请仅在不属于您自己或未经明确授权测试的系统上使用它。底层固件工具可能会暴露敏感的硬件信息,并且根据主板、固件版本、Secure Boot 状态和 UEFI 实现的不同,其行为可能会有所差异。
作者对任何误用、数据丢失、硬件问题、固件问题或违反第三方服务条款的行为不承担任何责任。
## 概述
Rainbow Dragon 被构建为一个独立的 UEFI 应用程序:
```
DragonTool.efi
```
一旦从 EFI shell 或可引导的 FAT32 EFI 分区启动,它将打开一个基于文本的交互式界面,用于直接从 UEFI 检查系统固件数据。
该工具包括以读取为中心的诊断功能,以及受控的内存中 SMBIOS 和 ACPI 测试操作。可变操作需要确认,并旨在更改支持的字段之前保留原始备份。
## 功能
- 交互式 UEFI 菜单界面
- 系统概览屏幕
- SMBIOS 表检测、浏览和详细报告
- ACPI 表扫描和检查
- UEFI 内存映射查看器
- 引导环境诊断
- 固件、GOP 图形、运行时和引导服务信息
- 兼容性和固件能力检查
- 早期 UEFI/DXE 加载镜像扫描器
- 带确认提示的 SMBIOS 内存测试修补
- 在首次伪造操作前存储原始 SMBIOS 备份
- System UUID 备份、对比、伪造和恢复支持
- CPU 速率原始字段备份和恢复支持
- SMBIOS 修改前后对比视图
- 检测到内部 SMBIOS 修补错误时自动回滚
- 带有校验和验证的 ACPI DSDT/SSDT OEM 头部修补,并在校验和失败时立即回滚
- GNU-EFI Makefile 构建
- 支持 Windows/Linux 主机的 Docker 构建
- 通过 `startup.nsh` 提供的启动辅助脚本
## 近期更改
- 在 SMBIOS 和 ACPI 伪造操作前添加了确认提示。
- 在修补前添加了 SMBIOS 备份验证。
- 添加了 System UUID 备份、伪造、对比、恢复和回滚支持。
- 添加了 CPU 速率原始字段备份/恢复集成到默认恢复中。
- 添加了与保存的默认值进行修改前后的对比输出。
- 添加了检测到内部修补错误时的自动 SMBIOS 回滚。
- 添加了 ACPI 校验和验证,失败时立即回滚头部。
- 通过保持文本明亮并使分隔线变暗来改善 UI 可读性。
## 当前 SMBIOS 覆盖范围
Rainbow Dragon 可以检查并(对于受支持的内存中测试操作)修补以下选定的字段:
- Type 0:BIOS 信息
- Type 1:系统信息,包括 System UUID
- Type 2:主板信息
- Type 3:机箱信息
- Type 4:处理器信息和选定的 CPU 速率字段
- Type 7:缓存插槽字符串
- Type 8:端口连接器字符串
- Type 9:系统插槽指定字符串
- Type 10:板载设备字符串
- Type 11:OEM 字符串
- Type 13:BIOS 语言字符串
- Type 17:内存设备字符串字段
- Type 22:便携式电池字符串字段
- Type 39:电源字符串字段
- Type 41:板载扩展设备参考
- Type 43:TPM 设备描述
## 安全行为
Rainbow Dragon 在可变操作前后应用了多项安全保障:
- 智能 SMBIOS 伪造需要明确的确认。
- ACPI DSDT/SSDT 伪造需要明确的确认。
- 原始 SMBIOS 字符串值在首次 SMBIOS 修补之前被保存。
- 现有备份将被保留,不会被后续运行覆盖。
- System UUID 拥有独立的原始 16 字节备份和恢复路径。
- CPU 速率原始字段拥有独立的备份和恢复路径。
- `Show HWID Diff From Backup`(显示与备份的 HWID 差异)菜单将当前值与保存的默认值进行比较。
- 如果检测到内部 SMBIOS 修补错误,Rainbow Dragon 将立即恢复保存的默认值。
- ACPI 表头部在修补后进行校验和验证;校验和验证失败将立即恢复原始头部字段。
- 更改均在内存中进行,重新启动后应会重置,为支持恢复而存储在 UEFI NVRAM 中的备份变量除外。
## 可检查的内容
Rainbow Dragon 可以显示和分析如下信息:
- BIOS 和固件供应商数据
- 系统制造商、产品名称、序列号、SKU、系列和 UUID
- 主板信息
- 机箱信息
- CPU 信息
- 内存设备和内存阵列
- TPM SMBIOS 条目
- 通过 SMBIOS 公开的 PCI 和插槽信息
- ACPI 根表和 DSDT/SSDT 头部
- UEFI 系统表数据
- UEFI 运行时和引导服务可用性
- Graphics Output Protocol 信息
- UEFI 内存描述符
- 引导路径和加载的镜像信息
## 使用场景
此项目可用于:
- 固件和 UEFI 研究
- 调试 SMBIOS 或 ACPI 暴露情况
- 在 OS 引导前检查硬件身份数据
- 测试不同系统上的 UEFI 兼容性
- 学习固件表如何通过 UEFI 公开
- 构建自定义的预启动诊断工具
- 比较不同机器或 BIOS 版本之间的固件行为
## 构建
### Docker 构建
在带有 Docker Desktop 的 Windows 上:
```
.\scripts\docker-build.ps1
```
输出文件生成为:
```
build\DragonTool.efi
```
### 原生 GNU-EFI 构建
在安装了 GNU-EFI 的 Linux 环境上:
```
make
```
输出文件生成为:
```
build/DragonTool.efi
```
## 引导使用
将生成的 `DragonTool.efi` 复制到 FAT32 EFI 分区或 USB 驱动器。
示例布局:
```
/
|- DragonTool.efi
`- startup.nsh
```
包含的 `startup.nsh` 会启动:
```
DragonTool.efi
```
然后引导进入 EFI shell 并运行该工具。
## 致谢
Rainbow Dragon 是基于 Samuel Tulach 的 Negative Spoofer 项目的初始基础构建的。
特别感谢 Samuel Tulach 提供的原始 Negative Spoofer 项目,它构成了本项目的初始工作基础。
原始项目:
```
https://github.com/SamuelTulach/negativespoofer
```
## 免责声明
Rainbow Dragon 仅用于教育、诊断和固件研究目的。
请仅在不属于您自己或未经明确授权测试的系统上使用它。底层固件工具可能会暴露敏感的硬件信息,并且根据主板、固件版本、Secure Boot 状态和 UEFI 实现的不同,其行为可能会有所差异。
作者对任何误用、数据丢失、硬件问题、固件问题或违反第三方服务条款的行为不承担任何责任。标签:ACPI, AI合规, DSDT, GNU-EFI, SMBIOS, SSDT, UEFI, UUID修改, 内存映射, 内存补丁, 反作弊绕过, 固件分析, 固件安全, 客户端加密, 引导环境, 引导诊断, 硬件信息, 硬件指纹伪造, 硬件诊断, 系统底层, 请求拦截