目前,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 0000 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 4D53 4C 49 43 2D 4D 50 4357 49 4E 44 4F 57 53 2001 00 02 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0030 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 EMSLIC-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 及该主题相关信息。