【转帖】【好文,不得不转】BIOS中SLIC 2.1表详细组成及验证激活相关解释说明
这实在是一篇不可多得的好文,看完了之后,你会对SLIC这个神秘的东西大大了解。这篇文章也解答了我一直以来的一个疑惑,为什么有TP-6D的SLIC,我不能在WinHex中把它直接改成TP-7b呢,这不就成了X60的原生SLIC了嘛,事实,远没那么简单原文刊登于作者博客:http://hi.baidu.com/wsp216110/bl ... f809232cf534e7.html
目前,Windows 7比较完美的破解方式是通过OEM方式激活。SLIC表是OEM激活中的关键部分,我们可以选择喜欢品牌的SLIC,修改加入本机的BIOS中,实现Windows 的OEM完美激活。
了解SLIC表构成原理及其验证方式对于修改或定制BIOS进行OEM激活是非常重要的。
本来我想这方面应有较详细的解释教程,但是只找到了 http://www.bios.net.cn/bbs/thread-66783-14-7.html 关于SLIC构成的文章。
该文对SLIC表头进行了说明,但缺乏其他两部分以及SLIC表含义等的一些解释。
理解了这些问题,才能选择合适的SLIC表,正确手动修改BIOS,而且知道能否可以成功通过验证激活。
在此只好自己动笔对SLIC表相关内容进行整理解释,其中有些是我的经验、理解和推想,不一定完全正确,欢迎指正。如果转载请注明出处,谢谢!
微软公司一直在加强防盗版方面工作。从WindowsXP微软开始引入了SLP(System-Locked Preinstallation)技术,在预安装过程中将系统同硬件锁定来防止盗版,该技术仅用于OEM 方式的产品激活。Windows 7采用的是SLP2.1技术,对于验证信息进行逐级保护,验证激活过程需要SLIC表支持。(关于SLP技术和OEM激活相关内容可参考《Windows 7的OEM激活条件及验证过程相关说明》,该文可与本文互相印证有助理解)
SLIC 是软件许可内部代码(Software Licensing Internal Code)的缩写,它位于BIOS的ACPI中,由OEM厂商根据微软的的要求进行制作,包含了SLP 2.x验证需要的相关信息。
下面表2我们以HP的SLIC 2.1为例进行说明,不同颜色表示各个组成部分,表1对其各个部分进行说明。
从表中我们可以看到,SLIC 总体分成三个部分:一个表头部分,两个存储内容的部分。
表头部分包含SLIC表的一些基本信息。 Public Key 部分保存公钥信息。 Marker 部分保存标记信息和数字签名。具体参考表1中说明。
表1 SLIC表组成部分详细说明
表2 SLIC表组成内容样例(HP的HPQOEMSLIC-MPC SLIC 2.1)
* 简要解释一下SLIC相关原理及使用,对表格内容做一下补充说明
1. 查看SLIC表时要注意,表中数值采用倒序(Little Endian)方式存储,即高位字节在后、低位字节在前,这是IA架构惯用的存储方式。
2. SLIC表提供了验证相关信息。其中表头信息不必解释。SLIC表将验证所需的重要信息保存在Marker Message部分,并加入了数字签名技术以防伪造。
就是说,OEM厂商创建了一对相匹配的公钥和私钥,将私钥秘密保存并用私钥对Marker Message部分进行签名,将签名结果保存在Marker Digital Siginature 部分,并将用来解密的公钥放在Public Key部分发布出来。
任何人都可利用公钥对数字签名通过模幂运算进行解密,然后与Message进行对照验证是否正确。但是没有私钥,无法自己伪造正确的签名。这就保证了所存储信息的安全。
以上概述不尽准确,更具体的过程请参考 http://forums.mydigitallife.info/showthread.php?t=7532。
2. 还要防止发布的公钥被篡改,这通过与OEM证书的匹配验证来实现,OEM证书中保存了公钥、OEMID、Marker Version相匹配的信息,可用来匹配验证公钥等信息的正确性、
关于证书与SLIC的匹配参考 http://forums.mydigitallife.info/showthread.php?t=4792 。当然,另一步还要保证OEM证书不被伪造,这不属于本文内容。
(以上两篇参考文章 BIOS之家有oho77的译文)
3. SLIC的正确性检查还包括校验正确,OEMID 和OEMTableID 和 RSDT 以及 XSDT 中的相应部分一致等。
4. SLIC表由OEM厂商发布,几乎无法伪造。因为它包含了利用RSA算法原理进行加密的数字签名,并使用1024位密钥,理论上说破解它需要的计算资源是不现实的。因此只能从电脑中提取OEM厂商公布的SLIC表。可查看《多家OEM品牌SLIC2.1及证书打包下载》。当然一些不受保护的部分可以修改,比如表头中的一些内容。
5. SLP 2.0的时候,微软使用Windows MarkerVersion部分表示版本,但是该部分受到匹配OEM证书的保护。如果改变就需要新的OEM证书。可能微软觉得麻烦,在2.1中改用原来保留字节0E2~0E5做为新的Marker版本,该部分还没有名字,这里的名字(Reserved Marker Version)是我加的。
6. 由于Messege部分的 Reserved Marker Version 做了改变,即使OEMID、OEM Table ID和公钥没有改变,Marker中的数字签名需要重新生成。我想这可能是SLIC 2.0 和2.1的仅有区别。
7. 发布Windows 7以后,大部分OEM厂商可能为省事,仍然使用Vista也就是SLP2.0时候的密钥。而OEMID、Marker Version部分通常也没改变,因此在Windows7中仍然可以使用Vista的证书。这些厂商包括HP、DELL、Lenovo等等。部分OEM厂商更换了新的密钥,因此需要新的证书,这包括Acer、BenQ等。(对后者,我想如果用Vista也需要使用新的证书)
8. 实际观察SLIC发现,大多数OEM厂商只使用一个OEMID,比如HP的OEMID为HPQOEM,IBM的为LENOVO。但是也有例外,比如Toshiba,使用TOSASU、TOSCPL、TOSINV等几个OEMID,因此需要对应不同的OEM证书。
9. 对绝大数相同OEMID,使用同一个密钥,因此可使用同一个OEM证书,而不必管OEMTableID是什么。比如,LENOVOTP-6F、LENOVOTP-6H、LENOVOTC-5I、LENOVOTP-7X等等都可以使用同一个证书。但也有个别例外,比如OEMID同为PacBel的SLIC 2.0就采用了两种以上的密钥,需要对应不同证书。
10. 整个验证过程重要的是OEMID、OEM Table ID等信息。同一个OEM厂商,通常设置不同的OEM Table ID从而产生不同的SLIC(Marker部分不同),用于不同的机型。OEM Creator ID、Revision等对验证过程基本上没有影响。
11. 并非所有的SLIC表在BIOS中都是这种标准构成形式,有的形式可能有所改变,比如听说有的DELL的Marker部分和Public Key部分会调换等。
12. 微软在盗版保护有关说明中提到,BIOS中的SLIC有关信息是不能改变的,包括BIOS中的其他有关验证内容。因此有些OEM刷新程序在更新BIOS的时候会跳过SLCI部分,以防止SLIC被修改。
13. SLIC主要用来提供正确的OEM厂商相关信息,与Windows版本无关。也就是说同样SLIC可以用于32或64位Windows 7各种版本的安装。而且SLIC 2.1可以向下兼容各种版本Vista的安装。
* OEM厂商制作和使用SLIC表的过程说明
1. 到微软OEM在线(MOO)网站提交OEM激活2.x的申请材料。
2. 获得相关激活资料,包括激活工具 OATool.exe 。
3. 利用OATool 产生一对匹配的RSA公钥(Public Key)和密钥。
4. 利用OATool,创建SLIC Public Key 部分,和包含公钥、OEMID等信息的待签名xml文件。
5. 将该xml文件提交给微软,获得经过微软签名认证过的OEM证书。
6. 根据产品情况设置OEM Table ID。
8. 利用OATool,根据OEM ID和OEM Table ID等信息,用自己的私钥进行签名,生成 SLIC Marker 部分。该Marker部分包含了Marker版本(是否为2.1)等信息。
7. 按照SLIC结构,建立符合APCI标准,包含OEMID、OEM Table ID、Public Key 和Marker等部分的SLIC表。
8. 将该SLIC表放到Windows可以通过ACPI_SLIC BIOS系统表访问的BIOS相应位置。并保证RSDT和XSDT中的OEMID、OEMTABLEID相一致。
9. 制作包含序列号和证书的自动安装光盘。
* 几个SLIC表相关工具
——用于查看和提取本机SLIC的工具:SLIC_Dump_Toolkit
——用于查看SLIC文件和防伪验证工具:SLICInfo
——用于检测和修复SLIC文件校验字节的工具:SLIC-Checker
——用于验证SLIC文件和OEM证书是否匹配工具:PubKeyCompare
以上可以工具在 《多家OEM品牌SLIC2.1及证书打包下载》中下载。
——推荐: 用来查看和防伪验证SLIC文件及OEM证书、并验证是否匹配的在线工具 http://www.d-fault.nl/test/ 。
该页面没有制作者信息,前几天看到有人怀疑这是微软或者其他人用来收集相关信息的。这里说明一下,该在线工具可以放心使用,其维护者是 mydigitallife.info 上的网友 freeStyler ,请看 http://forums.mydigitallife.info/showpost.php?p=107444&postcount=257 及该主题相关信息。
[ Edited byhilton on 2009-10-15 21:46 ] 我尝试在TC-5M的SLIC基础上,修改成TP-7b的X60原生SLIC,结果在这个网站 http://www.d-fault.nl/test/ 一验证,得出以下结果
这说明,我自己改过之后,数字签名对不上了,这样的slic放进bios中,刷到机器里可能会导致毁灭性的后果,当然,我也没尝试了,总之是有风险的 顶技术贴。。。。。。 mark下 这个要顶!留着备用~~~~ 这个要顶!留着备用~~~~ 支持好贴...... 正在关注此类话题了,收藏了。 谢谢楼主。
我想试用一下这个页面http://www.d-fault.nl/test/ ,请问怎么样找到我自己机器上的XrML Digital License:?
还有,inary BIOS SLIC 是不是就是那个刷bios时的ROM后缀的文件? Posted by 海上新客 on 2009-10-16 10:05 http://www.ibmnb.com/images/common/back.gif
谢谢楼主。
我想试用一下这个页面http://www.d-fault.nl/test/ ,请问怎么样找到我自己机器上的XrML Digital License:?
还有,inary BIOS SLIC 是不是就是那个刷bios时的ROM后缀的文件?
xrms就是证书文件,你当时导入的是哪个你就把哪个传上去
SLIC文件不是ROM文件,是ROM中的一部分,其存在形式是*.bin结尾的,一般用户是接触不到SLIC.bin文件的,大家用的基本都是修改过的ROM直接刷BIOS了,最近Thinkpad的marker出来了,大家才又开始关注SLIC.bin,因为用marker的话,就不用刷bios了,dos下一条命令就给BIOS加上SLIC字段了,当然前提是你的BIOS中还没有SLIC。
有关联想的SLIC.bin,可以去这里下载 http://d.namipan.com/d/520f642501dde624d4107f5718a519920436420a95912b00 技术贴,分析得很好 强帖留名~~ 先顶再看!:D 学习贴,要顶 ^_^ 先顶,再学习 太专业了,顶 没太看懂。。深奥~ 好贴,学究型人才啊。 太专业看不懂。
回复 #1 hilton 的帖子
mark 占位备查~ 确实好帖,技术贴。 SLIC只能说的微软用来限制客户和DB的一种方法。 那就是说 搞SLIC是怕装不上OEM的Win7吗?那我不装OEM的不就不用这么麻烦了... 相当不错~正准备激活 家里的台式机的 bios,这几天都在折腾~~ Posted by hqccww on 2009-10-25 00:15 http://www.ibmnb.com/images/common/back.gif
那就是说 搞SLIC是怕装不上OEM的Win7吗?
那我不装OEM的不就不用这么麻烦了...
嗯,如果你有正版序列号,那就不用这么麻烦了 好文,学习了! 不错不错,技术贴,先学习了 确实好帖,技术贴。 这个要顶!留着备用~~~~
页:
[1]
2