gpt4 book ai didi

efi - 操作系统旁边的 UEFI 运行时服务

转载 作者:行者123 更新时间:2023-12-04 12:41:40 27 4
gpt4 key购买 nike

我有在操作系统旁边运行一个小服务的想法,但我不确定这是否可能。我试图通过阅读一些文档来弄清楚,但没有走远,所以我的问题来了。

我阅读了有关 UEFI 运行时服务的信息。
是否有可能在固件中有一个小模块,它在所使用的操作系统旁边运行,并将有关设备位置的信息发送到互联网上的地址?

据我所知,一旦 UEFI 将控制权交给操作系统内核,就不可能在后台运行某些东西。

为了澄清我的意图,我想在我的笔记本电脑上有类似的东西。有 Prey 项目,但它安装在操作系统中。我正在使用没有自动登录的 Linux 发行版。如果有人会窃取它,他们可能只会安装 Windows。

最佳答案

您想要做的事情是被禁止的,因为那将成为病毒、记录器和其他恶意软件的入口。

也就是说,如果您想让一些代码在操作系统之外运行,您应该查看系统管理模式 (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 处理程序的区域。见下图:

    Platform Iniitialization Boot Phases

    SMM Drivers are dispatched by the SMM Core during the DXE Phase. So additional SMI handlers can be registered in the DXE Phase. Late in the DXE Phase, when no more SMM drivers can be dispatched, SMRAM will be locked down (as recommended practice). Once SMRAM is locked down, no additional SMM Drivers may be dispatched, so not additional SMI handlers can be registered. For example, an SMM Driver that registers an SMI handler cannot be loaded from the EFI Shell or be added as a DriverOption in the UEFI Boot Manager.



    source: tianocore

    这意味着您的 SMM 处理程序的代码必须存在于 BIOS 镜像中,这意味着使用添加的处理程序重建 BIOS。这很棘手,但存在提供 DXE 环境并将 SMM 处理程序代码构建到 PE 可执行文件中的工具,以及将 DXE 驱动程序添加到现有 BIOS 镜像的其他工具。但并非所有 BIOS 制造商都受支持。除非您的闪存芯片在插槽中并且您可以在外部对其进行重新编程,否则这是有风险的。

    但首先要检查 SMRAM 是否已锁定在您的系统上。如果幸运的话,您可以直接在 SMRAM 中添加您自己的 SMM 处理程序。这是巧妙但可行的。

    备注 : BIOS 中的 SMM 处理程序独立于操作系统,因此即使强盗安装了您想要的新操作系统,它也会运行。然而,在操作系统之外有很大的缺点:您需要在 SMM 处理程序中嵌入网络接口(interface)的驱动程序(仅轮询、无中断的驱动程序!)和 wlan 802.11、DHCP 和 IP 支持以连接到Wifi 并将您的数据路由到 Internet 上的外部主机。您将如何确定 wifi SSID 和密码?好吧,您可以等待操作系统为您初始化网络适配器,但您需要在调用之间保存/恢复网络主机 Controller 的完整状态。不是一个小或容易的项目。

    关于efi - 操作系统旁边的 UEFI 运行时服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264515/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com