【问题标题】:run script before boot options apears在启动选项出现之前运行脚本
【发布时间】:2026-02-18 20:55:01
【问题描述】:

你们中的任何人都知道是否可以在我获得进入 bios 的选项之前和操作系统启动之前运行脚本? 示例:我想用一个脚本保护我的电脑,该脚本要求我在出现启动选项的屏幕之前按某些键(因为密码可以被破解,甚至是 bios,我不信任它们)

ps:我已经研究这个问题几个小时了,但我找不到任何东西:(。我只需要知道要使用什么语言以及在哪里插入脚本。

提前致谢!

【问题讨论】:

  • 一个 UEFI shell 脚本也许可以做到这一点 (en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface)
  • BIOS 总是在启动过程中获得第一口。与主要的 bios 供应商相比,您对自己的安全能力更有信心吗?
  • 我不希望我的脚本在 bios 之前执行。我只想在启动选项出现之前使用它,这样我的操作系统都无法启动。
  • @Awesome - 您的问题指出“在我获得进入 bios 的选项之前可能运行脚本”。我假设在您最近的评论中,您说的是磁盘上软件提供的引导选项(即选择要引导的操作系统),而不是 bios(选择您的设备 sata1、sata2 等)。在这种情况下 - 是的,您编写的程序通常会显示引导选项。您必须查看引导加载程序、MBR 引导、分区表,并且几乎肯定需要使用多阶段。祝你好运,你的路还很长。看看:wiki.osdev.org/Main_Page
  • 我希望有一个快速的方法,但我会开始学习。谢谢:)

标签: security assembly passwords password-protection bios


【解决方案1】:

系统使用 UEFI BIOS 是可能的,而且不是那么难,几乎所有现代系统都是如此。

以下解决方案并不完全是您想要的,但它最接近您可以得到的。

必须做什么:

  1. 用 C 语言编写 UEFI 应用程序,该应用程序将等待按下正确的组合键。如果按下的组合不正确,请重新启动或等待另一次尝试。
  2. 使用bcfg UEFI Shell 命令影响引导顺序。您应该使用bcfg 将您的应用程序置于启动顺序之上,因此当设备启动时,第一个条目将是您的应用程序而不是操作系统。如何使用bcfg你可以阅读here, page 83

情侣笔记:

  • 这种方法的最大问题是有人可以进入 BIOS 设置并更改顺序,因此应用程序不会被执行,但这可以通过使用密码保护设置菜单来解决。
  • UEFI 应用程序必须存储在某处。这取决于存储介质,但应用程序应在 UEFI 可读分区上,如果有人断开存储,则将跳过启动选项,保护将不起作用。
  • 大多数 UEFI BIOS 供应商禁用 bcfg 命令,因为它可能很危险,但如果您有该选项,可以通过从 U 盘引导 UEFI Shell 来解决此问题。
  • 在系统中添加和删除设备会影响引导顺序。您应该测试并查看添加各种设备如何影响系统中的引导顺序。可能需要在 BIOS 设置菜单中进行一些额外配置,以确保在您的应用程序之前不会探测到新设备。

我写了blog post 关于在仿真环境中进行 UEFI 应用程序开发的文章,您应该考虑这样做,而不是在真实硬件上进行试验。

【讨论】: