目前,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 43 76 01 00 00 01 AB 48 50 51 4F 45 4D 53 4C 49 43 2D 4D 50 43 01 00 00 00 48 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 00 01 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 00 48 50 51 4F 45 4D 53 4C 49 43 2D 4D 50 43 57 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> 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表。可查看《多家OEM品牌SLIC2.1及證書打包下載》。當然一些不受保護的部分可以修改,比如表頭中的一些內容。
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。
7.利用OATool,根據OEM ID和OEM Table ID等信息,用自己的私鑰進行簽名,生成SLIC Marker部分。該Marker部分包含了Marker版本(是否為2.1)等信息。
8.按照SLIC結構,建立符合APCI標準,包含OEMID、OEM Table ID、Public Key和Marker等部分的SLIC表。
9.將該SLIC表放到Windows可以通過ACPI_SLIC BIOS系統表訪問的BIOS相應位置。並保證RSDT和XSDT中的OEMID、OEMTABLEID相一致。
10.製作包含序列號和證書的自動安裝光盤。
*幾個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及該主題相關信息。