禁止您做任何事情,因为那将成为病毒、记录器和其他恶意软件的门户。
也就是说,如果您想让一些代码在操作系统之外运行,您应该查看系统管理模式 (SMM)。
SMM 是与标准保护模式正交的 x86 处理器的执行模式。 SMM 允许 BIOS 一次完全挂起所有 CPU 上的操作系统,并进入 SMM 模式以执行一些 BIOS 服务。切换到 SMM 模式现在发生在您的 x86 机器上,因为您正在阅读此 Stackoverflow 答案。它由以下任一方式触发:
-
硬件:专用的系统管理中断线 (SMI#),与 IRQ 的工作方式非常相似,
-
软件:通过 I/O 访问主板逻辑认为特殊的位置(端口 0xb2 很常见)。
SMM 服务称为 SMM 处理程序,例如传感器值通常通过 SMM 调用 SMM 处理程序来检索。
SMM 处理程序在 UEFI 固件初始化到 SMRAM 的 DXE 阶段设置,SMRAM 是专用于 SMM 处理程序的区域。见下图:
SMM 驱动程序在 DXE 阶段由 SMM 核心调度。所以
额外的 SMI 处理程序可以在 DXE 阶段注册。迟到
在 DXE 阶段,当没有更多的 SMM 驱动程序可以调度时,SMRAM 将
被锁定(作为推荐的做法)。一旦 SMRAM 被锁定,
不能分派额外的 SMM 驱动程序,因此不会分派额外的 SMI
处理程序可以注册。例如,注册的 SMM 驱动程序
SMI 处理程序无法从 EFI Shell 加载或添加为
UEFI 引导管理器中的 DriverOption。
source: tianocore
这意味着您的 SMM 处理程序的代码必须存在于 BIOS 映像中,这意味着使用添加的处理程序重新构建 BIOS。这很棘手,但存在提供 DXE 环境并将 SMM 处理程序代码构建到 PE 可执行文件中的工具,以及将 DXE 驱动程序添加到现有 BIOS 映像的其他工具。但并非所有 BIOS 制造商都受支持。除非您的 Flash 芯片在插槽中并且您可以在外部对其进行重新编程,否则这是有风险的。
但首先要检查 SMRAM 是否已锁定在您的系统上。如果幸运的话,您可以直接在 SMRAM 中添加您自己的 SMM 处理程序。这很巧妙但可行。
注意:BIOS 中的 SMM 处理程序独立于操作系统,因此即使强盗安装了您想要的新操作系统,它也会运行。然而,在操作系统之外有很大的缺点:您需要在 SMM 处理程序中嵌入网络接口的驱动程序(仅轮询、无中断的驱动程序!)和 wlan 802.11、DHCP 和 IP 支持以连接到Wifi 并将您的数据路由到 Internet 上的外部主机。您将如何确定 wifi SSID 和密码?好吧,您可以等待操作系统为您初始化网络适配器,但您需要在调用之间保存/恢复网络主机控制器的完整状态。不是一个小项目或简单的项目。