2019年4月2日 星期二

SLIC 2.1組成及驗證激活

[轉貼]BIOS中SLIC 2.1表詳細組成及驗證激活相關解釋說明
目前,Windows 7比較完美的破解方式是通過OEM方式激活。SLIC表是OEM激活中的關鍵部分,我們可以選擇喜歡品牌的SLIC,修改加入本機的BIOS中,實現Windows的OEM完美激活。 
瞭解SLIC表構成原理及其驗證方式對於修改或定制BIOS進行OEM激活是非常重要的。
本來我想這方面應有較詳細的解釋教程,但只有對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中說明。








* 簡要解釋一下SLIC相關原理及使用,對錶格內容

做一下補充說明

1. 查看SLIC表時要注意,表中數值採用倒序(Little Endian)方式存儲,即高位字節在後、低位字節在前,這是IA架構慣用的存儲方式。

2. SLIC表提供了驗證相關信息。其中表頭信息不必解釋。SLIC表將驗證所需的重要信息保存在Marker Message部分,並加入了數字簽名技術以防偽造。就是說,OEM廠商創建了一對相匹配的公鑰和私鑰,將私鑰秘密保存並用私鑰對Marker Message部分進行簽名,將簽名結果保存在Marker Digital Siginature部分,並將用來解密的公鑰放在Public Key部分發佈出來。

任何人都可利用公鑰對數字簽名通過模冪運算進行解密,然後與Message進行對照驗證是否正確。但是沒有私鑰,無法自己偽造正確的簽名。這就保證了所存儲信息的安全。

2.還要防止發佈的公鑰被篡改,這通過與OEM證書的匹配驗證來實現,OEM證書中保存了公鑰、OEMID、Marker Version相匹配的信息,可用來匹配驗證公鑰等信息的正確性、關於證書與SLIC的匹配當然,另一步還要保證OEM證書不被偽造,這不屬於本文內容。

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。

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.製作包含序列號和證書的自動安裝光盤。


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。