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 测试。 ## 预览 rainbowdragon ## 概述 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修改, 内存映射, 内存补丁, 反作弊绕过, 固件分析, 固件安全, 客户端加密, 引导环境, 引导诊断, 硬件信息, 硬件指纹伪造, 硬件诊断, 系统底层, 请求拦截