更改bios代码/刷新BIOS

时间:2011-08-19 14:09:23

标签: security assembly operating-system bios osdev

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

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

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

有谁知道我如何读取/写入BIOS代码?或者有人可以提供描述此内容的网页的链接吗?

我知道这不仅可能会破坏我的设备,但也有可能,我知道风险并愿意接受它。

3 个答案:

答案 0 :(得分:3)

我不确定你想要达到的目的,但是:

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

如果您想修改/编写自己的BIOS,那么它将完全特定于该硬件。你最好的选择是从像Bochs这样的开源作为开始 - 你可以看一下BIOS的源代码(并轻松测试/调试它)你有理由理解BIOS代码并修改它我认为这不是你想要做的事情。

为什么不在操作系统启动时执行此身份验证?如果要保护数据,则应对其进行加密,并要求用户在启动时提供/提供解密密钥。

答案 1 :(得分:3)

Pinczakko关于BIOS逆向工程的articles是开始研究这个问题的好地方。同一作者也发表了book,但现已绝版。

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

答案 2 :(得分:2)

如果您正在考虑使用“传统”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部分可能会也可能不会被插入;如果它没有插座,你需要一个烙铁,并能够为零件创建一个插座/接头。您显然不希望使用主计算机系统开始此项目。也许您可以找到旧系统或参考板。