MCPLive > 杂志文章 > 跨越BIOS的三重门

跨越BIOS的三重门

2009-12-03Lanwellon《微型计算机》2009年11月上

掀起你的盖头来:通过修改软件看BIOS信息

在介绍完BIOS的基础知识之后,再让我们通过修改软件来进一步了解BIOS中所包含的信息。

Bootblock是前面我们介绍的BIOS启动区块,当BIOS受到损坏时,只要Bootblock还是完好的,则一般用户可以自行恢复。反之,当Bootblock也被损坏之后,那就只有返厂或者通过维修点专用的BIOS烧录机来重写BIOS了。

在Microcode部分存储了CPU的CPUID(英特尔平台)。当处理器厂商推出新的处理器型号时,主板厂商通常会发布新的BIOS来支持新产品,这实际上就是在Microcode部分增加CPUID列表的过程。当然,如果因为硬件的限制,如CPU供电规格、针脚数量等发生了变化,那么就无法通过更新CPUID来支持新的产品。

SMBIOS即System Management BIOS,它定义了BIOS中的数据结构,SMBIOS和DMI是由行业指导机构Desktop Management Task Force(DMTF)起草的开放性的技术标准。其中,DMI设计适用于任何的平台和操作系统,DMI实际上充当了管理工具和系统层之间接口的角色,它建立了标准的可管理系统更加方便了电脑厂商和用户对系统的了解。

我们使用BIOS工具AMIBCP打开一个BIOS文件,查看DMI部分,可以看到"System Manufacture"和"System Model Name"字样。

对于品牌机而言,这些位置都已经填上了相应的厂商名称。比如,联想电脑的System
Manufacture这一栏就是lenovo,而方正则是founder。这些字串在安装Windows XP的时候,对于
OEM版本系统的激活,有着重要的意义(即SLP1.0,后面会介绍)。

在这里我们可以清楚地看到,主板BIOS的启动区(BootBlock)、多语言支持、Microcode(微代码)、SMBIOS、DMI Table等各种选项。

上图中MMTool打开的BIOS中,User Def ined部分其实就是用来添加SLP2.0的Pubkey和
Marker信息的。微软从Windows XP 开始引入了SLP(System-Locked Preinstallation)技术,用于OEM产品的辅助激活。

什么是DMI?

DMI即Desktop Management Interface,是BIOS的重要组成部分。DMI的主要组成部分是
Management Information Format(MIF)数据库。这个数据库包括了所有有关电脑系统和配件的信息。通过DMI,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息。

需要指出的是,SLP仅用于品牌电脑以及笔记本电脑长厂商的OEM主板产品,不会在零售版或批量授权产品中出现。Windows XP采用的激活方式是SLP 1.0版,其原理是检测BIOS中是否存在由OEM硬件厂家设置的特定SLP字串,如果有,则认为软件为OEM合法授权,成为激活状态;否则,则要求用户输入OEM硬件附带的COA号码,并通过网络或电话激活软件。


将字串修改后刷新到主板中,操作系统的系统信息也会显示出相关的信息

由于认证原理简单,很快被熟悉BIOS原理及相关软件操作的人破解,随意在非OEM硬件以及
DIY的兼容机主板上实现一样的效果。普遍流行的做法是使用DMI编辑软件,在BIOS的DMI数据区加入SLP字串,使Windows XP认为OEM授权合法,成为激活状态。


SLP的认证机制

不过在微软的Windows Vista操作系统中,将SLP技术升级到2.0版本。SLP 2.0根据1.0的不足,加强了验证的技术,使其由简单的验证字串,变为验证BIOS中的SLP证书、标志以及硬件相关的特征。SLP 2.0在BIOS的ACPI中扩展出了一个新表—SLIC,用于储存SLP证书公钥(SLP PubKey)以及SLP授权标志(SLP Marker)。

SLP 2.0技术的验证具体过程如下:

1.如果检测到SLP产品密钥(SLP与用的CD-KEY),SLP验证过程启动。
2.Windows确认其包含(导入)的OEM证书是微软签名的。如果检测到OEM证书,则SLP验证继续进行。如果未检测到OEM证书,则SLP验证失败,要求重新进行产品激活。
3.OEM证书将同ACPI_SLIC BIOS表中的OEM公钥做比较。如果OEM证书和BIOS中的OEM公钥匹配,则SLP验证过程继续迚行。如果OEM证书和BIOS中的OEM公钥不匹配,则SLP验证失败,要求进行产品激活。
4.ACPI_SLIC BIOS表中也包含SLP标志。通过OEM公钥验证SLP标志,如通过,SLP验证过程继续。否则,SLP验证失败,要求进行产品激活。
5.SLP标志中包括OEMID字串和OEMTableID字串,与ACPI_RSDT和ACPI_XSDT的OEMID和OEMTableID比较,若其中之一与SLP标志中的字串完全相符,则SLP验证通过。否则,SLP验证失败,要求进行产品激活。

一台电脑的BIOS的SLIC表中是否添加了相关的OEM厂商信息,通过使用一些工具,例如Read&WriteUtility就可以看到。

好了,下面我们就来简单分析一下SLP2.0的结构吧,使用UltraEdit打开SLIC表中的相关内容。

SLIC表格一般是340个字节,其中Pubkey为156个字节,Marker为182个字节,2个空字节用于补全。一般Marker中会包含厂商的名称。Pubkey和Marker都采用RSA加密算法。值得一提的是,近微软要推出的Windows 7操作系统使用了SLP2.1,其原理和SLP2.0大体是相同的。

写在后

随着技术的发展,BIOS也经历了从无到有,从小大大,从简单到复杂的发展变迁。作为计算机底层默默奉献的“底层工作人员”,BIOS也见证了PC硬件一日千里的发展速度。在很多人看来深不可测的BIOS,经过我们的讲解之后各位是否发现其实并不神秘。

在BIOS的研发过程中,工程师们也使用了很多人性化以及模块化的设计,这样经过层层抽丝剥茧之后,大家甚至会觉得BIOS触手可及。在经过简单的研究之后,我们甚至可以自行修改一些简单的项目,例如更改开机LOGO,或者把自己DIY的电脑变成你想要的“品牌机”,DIY的精神就是发挥自己的智慧,充分发挥BIOS的功用,让它尽可能为我们所用。

分享到:

用户评论

用户名:

密码: