查看文章
 
BIOS中SLIC 2.1表详细组成及验证激活相关解释说明
2009-09-16 15:49

目前,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表相关内容进行整理解释,其中有些是我的经验、理解和推想,不一定完全正确,欢迎指正。如果转载请注明出处,谢谢!

微软公司一直在加强防盗版方面工作。从Windows XP微软开始引入了SLP(System-Locked Preinstallation)技术, 在预安装过程中将系统同硬件锁定来防止盗版,该技术仅用于OEM 方式的产品激活。Windows 7采用的是SLP 2.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中说明。

位置
中文描述
英文描述
字节长度
说    明
000~023
表头部分
Header
36
提供SLIC表相关基本信息。
000~003
标识
Signature
4
表名: SLIC
004~007
表长
Length
4
整个表的长度: 176H,即374字节。
008
修订
Revision
1
SLIC的版本,目前为1
009
校验位
Checksum
1
重要。修正此项使整个SLIC表校验和为0
00A~00F
OEM标识
OEMID
6
重要。用来标识OEM厂商。
010~017
OEM Table 标识
OEM Table ID
8
重要。OEM厂商用来标识机型、主板或者BIOS。
018~01B
OEM 修订
OEM Revision
4
OEM 厂商进行的修订,主要为提供 OEM Table ID
01C~01F
创建者标识
Creator ID
4
创建此表的工具提供者标识
020~023
创建者修订
Creator Revision
4
创建此表的工具修订信息
024~0BF
软件许可公钥部分
Software Licensing Public Key structure
156
由OEM厂商创建并提供的RSA公钥,二进制形式
03C~03F
公钥指数
Public Key Exponent
4
RSA公钥的指数部分,总是为 01 00 01 00
040~0BF
公钥模数
Public Key Modulus
128
RSA公钥的模数部分,用来解密数字签名 。
0C0~175
软件许可Windows标记部分
Software Licensing Windows marker structure
182
Windows 标记信息及其数字签名
0C8~0F5
标记信息
Marker Message
46
Windows 标记所包含信息
0C8~0CB
标记版本
Windows Marker Version
4
目前总是为00 00 02 00 。
0CC~0D1
OEM标识
OEMID
6
重要。同上。
0D2~0D9
OEM Table 标识
OEM Table ID
8
重要。同上。
0DA~0E2
Windows 旗标
Windows Flag
8
总是为 “Windows ”
0E2~0E5
备用标记版本
Reserved Marker Version
4
重要。备用的标记版本信息,SLIC2.1中使用。
0E6~0F5
备用字节
Reserved Bytes
16
为保存将来信息备用。目前总是全部为00 。
0F6~175
标记数字签名
Marker Digital Signature
128
Windows 标记信息的数字签名,用来保护标记信息

表1 SLIC表组成部分详细说明

ACPI_SLIC

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

   
00000000:
00000010:
00000020:
00000030:
00000040:
00000050:
00000060:
00000070:
00000080:
00000090:
000000A0:
000000B0:
000000C0:
000000D0:
000000E0:
000000F0:
00000100:
00000110:
00000120:
00000130:
00000140:
00000150:
00000160:
00000170:
53 4C 49 4376 01 00 00   01AB48 50 51 4F 45 4D
53 4C 49 43 2D 4D 50 43   01 00 00 0048 50 51 20
01 00 00 00
00 00 00 00   9C 00 00 00 06 02 00 00
00 24 00 00 52 53 41 31   00 04 00 0001 00 01 00
5B AB 60 56 BC 58 1E E8   C1 D2 A1 5C E5 4F BB FD
1D A9 8C 94 B4 AE 08 11   DC 13 59 D3 7F F6 3E 87
31 B9 95 74 10 DA 3B A4   5B B5 19 82 7C 39 D7 0D
7C 22 AC 1C 2A 84 E9 0A   88 6D FA B1 E2 D8 E8 21
96 E1 2E 68 9A BF 44 45   3E 3C 8E 99 90 DE 37 38
57 0B 92 15 BC DE FF F2   07 7E B5 40 8C 51 3A C3
02 48 F6 13 12 72 FB 42   78 E6 47 88 54 C7 B0 F0
93 9E FB 04 B7 B8 B8 90   DE DB ED 32 E1 FB 54 A6

01 00 00 00 B6 00 00 00   00 00 02 0048 50 51 4F
45 4D
53 4C 49 43 2D 4D   50 4357 49 4E 44 4F 57
53 20
01 00 02 00
00 00   00 00 00 00 00 00 00 00
00 00 00 00 00 00
30 90   1F B4 A4 BE 80 1E E9 33
EC 7F FC B1 28 0E A6 CE   43 72 8C 79 30 B4 F4 59
EA 7D CF B7 11 8B DA 70   C5 C8 3F 79 20 08 6F 64
CA 07 88 B3 B1 16 B4 BA   1A F1 85 52 B1 F5 07 55
B5 70 61 EF 44 8C AA 5F   78 14 66 98 9C F3 58 D8
AA 48 E0 37 F8 F6 AB 64   FA DA 17 2A 62 E3 04 1D
32 2D D5 EA 33 66 5C 5B   3B 0E F7 09 66 42 32 AA
14 99 C3 EE 1A 62 3B 07   5F F0 48 44 C4 E6 32 59
1F 14 3E F1 B2 38

SLICv....«HPQOEM
SLIC-MPC....HPQ
....
....œ.......
.$..RSA1........
[«`V¼X.èÁÒ¡\åO»ý
.©Œ”´®..Ü.YÓ ö>‡
1¹•t.Ú;¤[µ.‚|9×.
|"¬.*„é.ˆmú±âØè!
–á.hš¿DE><?™?Þ78
W.’.¼Þÿò.~µ@ŒQ:Ã
.Hö..rûBxæGˆTǰð
“?û.·¸¸?ÞÛí2áûT¦

....¶.......HPQO
EM
SLIC-MPCWINDOW
S
..............
......
0?.´¤¾ .é3
ì ü±(.¦ÎCrŒy0´ôY
ê}Ï·.‹ÚpÅÈ?y .od
Ê.ˆ³±.´º.ñ…R±õ.U
µpaïDŒª_x.f˜œóXØ
ªHà7øö«dúÚ.*bã..
2-Õê3f\[;.÷.fB2ª
.™Ãî.b;._ðHDÄæ2Y
..>ñ²8

表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表。可查看《》。当然一些不受保护的部分可以修改,比如表头中的一些内容。

5. SLP 2.0的时候,微软使用Windows Marker Version部分表示版本,但是该部分受到匹配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也就是SLP 2.0时候的密钥。而OEMID、Marker Version部分通常也没改变,因此在Windows 7中仍然可以使用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证书,而不必管OEM Table ID是什么。比如,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表的过程说明

了解SLIC表的制作过程可以有助于更好的理解SLIC表的内容。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
以上可以工具在 《中下载。

——推荐: 用来查看和防伪验证SLIC文件及OEM证书、并验证是否匹配的在线工具 http://www.d-fault.nl/test/
该页面没有制作者信息,前几天看到有人怀疑这是微软或者其他人用来收集相关信息的。这里说明一下,该在线工具可以放心使用,其维护者是 mydigitallife.info 上的网友 freeStyler ,请看 http://forums.mydigitallife.info/showpost.php?p=107444&postcount=257 及该主题相关信息。


类别:windows激活相关||添加到搜藏 |分享到i贴吧|浏览(16901)|评论 (0)
 
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu