為防止盜版,微軟針對Vista做了些什麼?
在官方白皮書微軟這樣談到激活程序存在的意義,“Microsoft 產品激活是一項可以檢驗軟件產品是否得到合理許可的反盜版技術。其目的是為了減少因為不經意的拷貝而導致的盜版。激活也有助于保護硬盤,避免被複制。激活是快捷、簡單而且不引人注意的,它可以保護您的隱私。”
在這樣的防盜版機制收效甚微的教訓之後,微軟在新一代軟件 Windows Vista中制定了更嚴格的激活條件:
1、加強了零售產品密鑰的激活驗証;
2、批量授權不再是完全免激活,而是授權大客戶使用激活服務器,眾多計算機連接到這個服務器進行激活,且定期進行重新激活。
微軟在關于OEM激活許可証原理中談到,OEM版本系統無需激活操作,OEM激活僅可用于特許OEM。對于已激活的密鑰管理服務 (KMS) 客戶端,其重置激活的次數沒有限制。對于未激活的KMS 客戶端,最多只能對激活時鐘進行三次重置,與使用單一許可証的情況相同。
‧在XP/2003系統,OEM採用SLP1.0的驗証機制:
具體表現為:
1、OEM廠商的出廠機器BIOS里含有該品牌的字符串(STRING)
2、操作系統里含有對應該品牌的OEMBIOS.*文件
3、安裝序列號為對應該品牌的OEM KEY
如果上述3個條件具備,則XP/2003系統可以免激活,否則,等同于零售版,必須在30天內激活(比如用COA的KEY激活XP/2003)
‧在VISTA系統,OEM採用SLP2.0的驗証機制:
具體表現為:
1、OEM廠商的出廠機器BIOS里含有該品牌的OEM授權証書的數字簽名
2、OEM廠商的出廠機器BIOS里含有該品牌的OEM KEY的數字簽名
3、操作系統里含有對應該品牌的OEM授權証書
4、安裝序列號為對應授權証書版本的OEM KEY
如果上述4個條件具備,則VISTA OEM系統為免激活,否則,等同于零售版,必須在30天內激活(比如用COA的KEY激活VISTA)
什麼是SLP?
SLP(System Lock Preinstall)的中文翻譯為“預安裝系統的激活保護措施”。它是微軟與OEM廠商之間的一種協議,SLP是為了最大限度地保証OEM廠商的利益而又能避免盜版的泛濫。
微軟從Windows XP 開始引入了SLP(System-Locked Preinstallation)技術, 用于OEM產品的輔助激活。SLP僅用于OEM產品,不會在零售版或批量授權產品中出現。Windows XP採用的是SLP 1.0版,其原理是檢測BIOS中是否存在由OEM硬件廠家設置的特定SLP字串,如果有,則認為軟件為OEM合法授權,成為激活狀態;否則,則要求用戶輸入OEM硬件附帶的COA號碼,並通過網絡或電話激活軟件。由于原理簡單,很快被熟悉BIOS原理及相關軟件操作的人破解,隨意在非OEM硬件-DIY的兼容機上實現了一樣的效果。普遍流行的做法是使用DMI編輯軟件,在BIOS的DMI數據區加入SLP字串,使Windows XP認為OEM授權合法,成為激活狀態。
微軟規定,能夠成功激活的OEM版本Vista,必須經由原始設備制造商 (OEM) 通路的計算機必須在其系統BIOS內ACPI_SLIC表格中有一個有效的Windows 標記。Windows標記的出現對于計劃使用Windows Vista大量授權媒體來重新映象、或透過大量授權合約提供的重新映象權限來升級OEM 的大量授權客戶非常重要。
既然SLP是此次認証的關鍵,那麼SLP的漏洞在什麼地方呢?這是我們下面所要討論的。
如何通過欺騙SLP 2.0技術驗証成功激活系統
SLP 2.0技術的驗証具體過程如下:
1. 如果檢測到SLP產品密鑰(SLP與用的CD-KEY),SLP驗証過程啟動。
2. Windows確認其包含(導入)的OEM証書是微軟簽名的。如果檢測到OEM証書,則SLP驗証繼續□行。如果未檢測到OEM証書,則SLP驗証失敗,要求□行產品激活。
3. OEM証書將同ACPI_SLIC BIOS表中的OEM公鑰做比較。如果OEM証書和BIOS中的OEM公鑰匹配,則SLP驗証過程繼續□行。如果OEM証書和BIOS中的OEM公鑰丌匹配,則SLP驗証失敗,要求□行產品激活。
4. ACPI_SLIC BIOS表中也包含SLP標志。通過OEM公鑰驗証SLP標志,如通過,SLP驗証過程繼續。否則,SLP驗証失敗,要求□行產品激活。
5. SLP標志中包括OEMID字串和OEMTableID字串,與ACPI_RSDT和ACPI_XSDT的OEMID和OEMTableID比較,若其中之一不SLP標志中的字串完全相符,則SLP驗証通過。否則,SLP驗証失敗,要求□行產品激活。