14

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

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

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

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

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

4

3 回答 3

4

Pinczakko 关于 BIOS 逆向工程的文章是一个很好的起点。同一作者还出版了一本书,但现在已经绝版了。

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

于 2011-08-19T21:50:53.083 回答
3

我不太确定您要达到的目标,但是:

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

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

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

于 2011-08-19T14:28:34.933 回答
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

英特尔关于该主题的新闻书籍: 超越 BIOS

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

于 2011-08-20T02:37:12.223 回答