【问题标题】:Changing bios code/flashing the bios更改BIOS代码/刷新BIOS
【发布时间】:2011-10-30 16:06:04
【问题描述】:

我花了很多时间开发一个操作系统并处理我的低级引导加载程序。但是现在我想在不离开低级环境并做一些涉及安全的事情的同时,从我的操作系统中抽出一些时间。

所以我选择按照预引导身份验证方案构建自己的标准密码实用程序。由于我希望该软件至少具有一点便携性,因此我希望它尽可能少地使用外部支持。我认为,如果我设法在自检和 int 19 引导程序之间从正在运行的实模式操作系统中“挂钩”到 bios 中,那我将是最好的。

然而,事实证明不可能找到有关如何修改 bios 代码的信息。我没有发现如何实现前面提到的。我只找到了描述如何刷新你的 BIOS 的页面。

有谁知道我如何读/写 bios 代码?或者有人可以提供指向描述此内容的页面的链接吗?

我知道不仅有可能让我的设备变砖,而且很有可能,我知道风险并愿意承担。

【问题讨论】:

  • 我很乐意提供帮助,但这超出了我的范围,很好的问题。 +1。

标签: security assembly operating-system bios osdev


【解决方案1】:

我不太确定你想要达到什么目标,但是:

BIOS 完全是特定于硬件的 - 每个制造商都有自己的更新/刷新 BIOS 机制,因此试图提出一种更新 BIOS 的便携式机制注定会失败。例如,当使用Bochs 时,您通过指定不同的 BIOS ROM 映像来“更新”BIOS。

如果您想修改/编写自己的 BIOS,那么它将完全针对该硬件。您最好的选择是从像 Bochs 这样的开源项目开始 - 因为您可以查看 BIOS 的源代码(并轻松测试/调试它),您有合理的机会理解 BIOS 代码并对其进行修改进入一些有效的东西,但我怀疑这不是你想要做的。

为什么不在您的操作系统启动时执行此身份验证?如果你想保护数据,那么你应该加密它并要求用户在启动时提供登录/提供解密密钥。

【讨论】:

  • 我会调查 bochs。我已经在我的操作系统中实现了一个执行安全检查的模块,尽管它只是一个简单的 xor/ror/rol 加密(更像是一种编码)可用于保护本机不支持此功能的操作系统。此外,我面临的问题更像是“我知道想做但不知道该怎么做”。我不知道如何访问闪存,什么时候我可以开始自己尝试和解决问题。
【解决方案2】:

Pinczakko 关于 BIOS 逆向工程的 articles 是一个很好的起点。还有一个book是同一作者发表的,但现在已经绝版了。

我不确定这种方法是否是实现安全启动的最佳方法,但该站点上的文章非常详细,应该会为您指出修改 BIOS 固件的方法。

【讨论】:

  • 我以前看过他的几篇文章,我以为他只是写了一个逆向工程的指南,但是在你给的链接上有几篇文章,谢谢那个!
  • 看来他的文章Award BIOS Code Injection 正是我要找的,谢谢你的链接。正如我之前所说,我知道他的反转文章,但不知道他的其他文章。
【解决方案3】:

如果您正在考虑使用“旧版”PC BIOS,我会劝阻您不要尝试,原因有很多 Justin 提到的:1) 旧版 BIOS 是特定于 PC 供应商的; 2)它是封闭源代码和专有的; 3) 没有行业标准定义旧版 BIOS 接口来扩展系统,就像您尝试做的那样。

另一方面,如果您可以访问基于UEFI 的 BIOS PC,则可以编写自己的 PEI/DXE 驱动程序来实现此类功能。这至少会为您指明正确的方向:

http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Welcome

有关该主题的英特尔新闻书籍:Beyond BIOS

关于读/写 BIOS 的实用性,您需要识别包含 BIOS 的 SPI 部分并获得ROM burner。 SPI 部分可以插接也可以不插接;如果没有插座,您将需要一个烙铁并能够为该零件创建一个插座/接头。您显然不想使用您的主要计算机系统开始这个项目。也许您可以找到旧系统或参考板。

【讨论】:

  • 感谢您的回答,我会阅读您发布的文章,看看它们是否对我有帮助。恐怕他们不会,因为我拥有的所有机器都使用旧版 BIOS。
猜你喜欢
  • 2018-08-06
  • 2019-05-18
  • 1970-01-01
  • 2021-05-21
  • 2020-01-16
  • 1970-01-01
  • 2012-03-24
  • 2011-03-17
  • 2012-11-15
相关资源
最近更新 更多