小馬oem是如何做到windows激活的?

技術含量層次如何,為什麼沒有被微軟追究。


作為有數年折騰經驗的非專業用戶強答一下……答案的大多數內容都是當年媒體/論壇鋪天蓋地重複講過的,少數內容是我根據當時的科普教程折騰的經驗。

如果有錯漏之處請指出,謝謝。

技術方面,研究、討論Windows、Office的破解、激活等,似乎有一個大本營:MyDigitalLife論壇(My Digital Life Forums)。

但我不知道小馬有多少東西是「原創」的,有多少東西是從這個論壇學習借鑒的(或者反之)……

一、對於Win7、Vista來說,小馬的原理是偽造預裝Win7品牌機的SLIC,然後導入對應的xrm-ms數字證書和產品密鑰(序列號)。

預裝Vista、Win7的品牌機激活時,不會聯網驗證,只需要湊齊三個東西就能激活:

  1. SLIC

  2. xrm-ms格式的數字證書

  3. OEM激活密鑰

其中,1保存在主板BIOS的ACPI表裡,2、3由Windows保存在註冊表和一些文件里。

這三個東西都與硬體唯一特徵(比如網卡MAC地址)無關,而且都有手段可以複製、偽造,所以很快大家就摸索出「盜版」方法,把這三點各個擊破。

在這三點中,SLIC保存在主板BIOS晶元里,算是最難搞定的一項。最初的激活方法是所謂「硬刷」,就是先使用工具軟體修改BIOS,注入SLIC,然後把修改後的BIOS刷入主板。

(實際上不光需要有SLIC存在,還需要滿足各種條件。打開SLIC ToolKit V3.2就可以看到:XSDT/RSDT中的OEMID和TableID、SLIC中的PubKey和Marker需要全部相等)

這樣激活的好處是不容易失效,但操作繁瑣,不同主板修改BIOS方法不完全一樣,風險也比較大:萬一主板刷「磚」了,不太好救。

後來大家發現並不需要真正修改BIOS,只需要在系統啟動之前,在對應的內存地址上偽造一個SLIC,就能達到相同的效果,這就是小馬使用的「軟激活」原理

小馬具體是怎麼做到在Windows啟動前偽造SLIC的呢?應該也有不少網友見過讓人懵B的「OEM7GRUB」吧?它應該是修改過的grub4dos。grub4dos是一個功能很豐富的開源引導器,它可以鏈式啟動微軟的bootmgr,然後bootmgr就會繼續啟動Windows。

grub4dos長啥樣?幾百KB的grldr文件,這就是它最常見的樣子(當然,還需要MBR/PBR代碼配合)。

小馬給grub4dos增加了偽造SLIC的功能,再把配置文件(menu.lst,它的內容就是OEM7GRUB菜單里的那些項目)也集成到引導文件里,就有了文件名為5個隨機字元、被設為隱藏屬性引導文件。小馬把這個文件放在活動分區里,再用修改過的bootsect.exe(微軟的,Windows安裝盤裡就有,小馬把它魔改了)寫入活動分區的引導代碼,就可以實現在Windows啟動之前偽造SLIC的目的了。

UEFI下,MBR、PBR、grub4dos那一套已經作廢了。而且,Win7也不完全支持UEFI,仍然需要CSM輔助才能正常啟動(因為啟動時需要調用INT10中斷),不開啟CSM的話,啟動過程會卡住或崩潰。

即便如此,仍然有人開發了UEFI下偽造SLIC的程序,就是WindSLIC。這個程序是開源的,代碼託管在Github上,MyDigitalLife論壇上也有專帖。小馬在UEFI下激活Win7靠的就是WindSLIC

正常情況下,UEFI啟動序列(保存在主板NVRAM里)里的Windows Boot Manager是排在前面的,然後就會依次執行bootmgfw.efi、winload.efi等來載入系統。小馬則會修改UEFI啟動序列,添加一項WindSLIC,並把它排到前面,然後WindSLIC再繼續執行啟動系統的過程。

PS:原版的WindSLIC在主板上已有SLIC時,有時不能成功激活系統,因為它偽造的SLIC不是第一個,被系統忽略掉了,原來就有的SLIC又是無效的。後來有人做了一點修改,讓WindSLIC把已有的SLIC重命名為OEMx,這樣就可以讓偽造的SLIC頂替原有的SLIC,然後就能成功激活系統了,這個修改版在MyDigitalLife論壇原帖里可以找到。

這樣,最難搞定的SLIC也搞定了。小馬再使用slmgr.vbs導入OEM激活密鑰和xrm-ms數字證書,重啟一下,系統就會被偽造的SLIC騙過,激活成功。

這招自Win8起就不奏效了,我記得原因是微軟對預裝Win8的品牌機也啟用了聯網驗證,需要提交由硬體唯一特徵計算出的hardware hash給微軟(可以看作「一機一號」),而且不再檢查SLIC,改用MSDM,MSDM中只保存了序列號。

即便是「軟激活」仍然有效的Win7、Vista,雖然有安全(不用擔心主板會「磚」)、方便(小馬就做到了「一鍵激活」)等好處,缺點和隱患也是存在的,問題的根源是偽造SLIC要干涉系統引導過程:

1.如果系統在更新、修復等操作中重寫了MBR、VBR等引導代碼,就不能偽造SLIC,然後激活就失效了。

2.在個別型號主板上,會出現不能正常開機、只有一個游標的問題

還有少數主板(我見過的有藍天的某P系列准系統筆記本),在使用小馬激活後,Windows啟動時會出現0x000000A5藍屏(ACPI_BIOS_ERROR,顧名思義,便是修改ACPI表、加入SLIC時把ACPI表的數據結構改壞了)。

3.對於個別型號主板,如果用UEFI啟動Win7,又用了小馬激活,就會「變磚」無法開機。筆記本和台式機都有例子,一般拔下硬碟可以解決。這個具體原因還不清楚,可能與UEFI的快速啟動有關,也可能是某些UEFI固件在處理啟動順序(保存在主板NVRAM中,而不是硬碟上)時有Bug,小馬在安裝WindSLIC時修改了NVRAM里的啟動順序,然後可能就觸發了Bug。

PS:Win7中旗艦版是不能用KMS激活的,所以模擬品牌機激活幾乎是盜版的唯一選擇;但是專業版還是可以用KMS激活的。

二、對於Win8/8.1/10,還有Office 2007/2010/2013/2016(不確定,有錯請指出),原理是:在本機開一個KMS伺服器,通過slmgr.vbs、ospp.vbs(或者等價的其他手段)設置激活方式為KMS,並設置KMS伺服器為本機對應埠。

(實際上激活工具還做了Localhost bypass——顯而易見,如果Windows允許KMS伺服器自己激活自己,那就完全把激活這一套繞過了。所以,激活工具還得通過dll注入、載入驅動等手段繞過這個限制)

KMS應該是給一些大型組織(比如政府、大企業)中不能連接互聯網的電腦準備的。KMS激活不需要連接到微軟的伺服器,由此產生了「漏洞」。(所以,如果你用了KMS激活,你可以在Win10的設置界面里看到「Windows已使用你組織的伺服器激活」字樣)

激活工具開的KMS伺服器當然是來者不拒了,所以可以激活Windows和Office。

再結合計劃任務,連續開機一段時間後重新激活,和啟動時重新激活,就搞定每次激活只能維持180天的問題了。

顯然,這個方法不完美,因為需要定期運行激活工具才能保持激活,但激活工具很容易被誤殺掉,導致激活不能自動續期,一段時間後就過期了。在激活到期之前,系統就會提醒用戶。

而且,有不少惡意軟體借激活工具的名義,得以獲取管理員許可權,並常駐系統。

實際上小馬已經被媒體報道有作惡嫌疑:小馬已變壞,「小馬激活」病毒分析,你在用小馬激活嗎?小心了

Windows Defender這個自帶的殺軟就對KMS類激活工具查殺率很高,雖然激活工具未必有惡意行為。其他殺毒軟體也常常對激活工具報毒。

即使沒被報毒,360安全衛士、電腦管家等也常常把激活工具作為「開機優化」的犧牲品,用戶看也不看就「優化」掉了,激活不能自動續期,一段時間後自然就到期了。

我以前用類似的激活工具激活的Win8不能從應用商店升級8.1,不知道還有啥限制,反正KMS和其他激活方式微軟會區別對待。

PS:樓下說KMS激活需要安裝大客戶版Win8,難道折騰KMS激活需要專門重裝一次系統?折騰過這個的都知道,並不需要……一鍵搞定,重啟都不用。

比如Windows 10 家庭中文版(CoreCountrySpecific),新裝的虛擬機:

一次激活期限只有45天,但是可以不停地續期(用計劃任務就自動續期了)。

至於小馬……我記得CoreCountrySpecific版Win8/8.1/10用小馬激活的確可能失敗,確切原因我也不清楚,可能是評論區中提到的KMS協議版本不符導致的……

最後,KMS不是什麼神秘的後門,微軟官方的文檔描述了KMS的正確用法:

Activate using Key Management Service (Windows 10)

文檔還描述了激活時通過網路給微軟發送了哪些信息:

Appendix Information sent to Microsoft during activation (Windows 10)


我只說一句話,現在的小馬不是oem,是kms


Windows 7 和 Windows Vista 的激活有兩種方式,一種是普通的序列號激活,還有一種是OEM激活。OEM激活時,系統檢查的是BIOS里的SLIC,如果裡面有相應的內容,就能激活對應版本的系統。例如SLIC 是2.0 的配合對應的OEM KEY能激活從Home Basic到Ultimate版本的Windows Vista。SLIC 是2.1 的配合對應的OEM KEY能激活從家庭基礎版到旗艦版的Window 7。

OEM KEY在如今基本已經是公開的了。只要百度就能度到。而正版激活的難點就落到到BIOS的SLIC改寫上。當年還有論壇的牛人冒著主板刷壞的危險去改寫SLIC,從而激活正版的Windows。後來出現了類似OEM7這類的激活工具,原理就是在系統啟動前先在內存中偽造一個SLIC,讓系統啟動後,檢查BIOS的SLIC時實際返回的是內存中偽造的那個SLIC。從而使得非OEM機器也能通過OEM激活方式激活。至於微軟追究的問題估計是系統啟動之後,這個SLIC已經真假難辨了,如果微軟封殺這個激活方式,那麼真正的OEM電腦也會受到影響。所以微軟的做法是到了Windows 8就沒有這種OEM激活的方式了。

不好意思,我可能先入為主的認為題主問的是OEM7這個軟體。Win8 之後,系統激活基本都轉去安裝大客戶版然後用連接KMS伺服器的方式激活了,這種聯網激活的方式在180天內要重新激活一次,可用時間再延長180天(這也是微軟吸取了XP時代的教訓,XP的大客戶版不需要180天重新激活的,所以當時用XP時,要是裝上大客戶版可謂是一勞永逸)。


推薦閱讀:

如何看待《尼爾》《仙女座》等遊戲使用的最新版的Denuvo 64位防篡改技術被破解?
zip密碼破解相比RAR為什麼那麼快?

TAG:MicrosoftWindows | 破解 | 計算機系統 | Windows8 |