TSforge - 永久激活 Windows 7、Office 2013 之后的全部版本
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
MAS 團(tuán)隊(duì)近期發(fā)布了名為 TSforge 的激活方案,可激活自 Windows 7、Office 2013 之后的全部版本。方案利用一個(gè)漏洞繞過傳統(tǒng)的激活驗(yàn)證,實(shí)現(xiàn)超過 4000 年的永久激活。 打開 PowerShell 輸入:
適用于 Windows 7 到 11 的激活/評(píng)估擴(kuò)展方法的集合。注意:我們不支持直接使用此工具。此處介紹的方法的唯一受支持的實(shí)現(xiàn)是在 Microsoft 激活腳本中。 包含的方法和工具:
用法Usage: TSforge [/dump <filePath> (<encrFilePath>)] [/load <filePath>] [/kms4k] [/avma4k] [/zcid] [/rtmr] [/duid] [/igpk] [/kmsc] [/ctpr] [/revl] [/prod] [/test] [<activation id>] [/ver <version override>] Options: /dump <filePath> (<encrFilePath>) Dump and decrypt the physical store to the specified path. /load <filePath> Load and re-encrypt the physical store from the specified path. /kms4k Activate using KMS4k. Only supports KMS-activatable editions. /avma4k Activate using AVMA4k. Only supports Windows Server 2012 R2+. /zcid Activate using ZeroCID. Only supports phone-activatable editions. /rtmr Reset grace/evaluation period timers. /rrmc Reset the rearm count. /duid Delete product key Unique ID used in online key validation. /igpk Install auto-generated/fake product key according to the specified Activation ID. /kmsc Reset the charged count on the local KMS server to 25. Requires an activated KMS host. /ctpr Clear the physical store tamper state. /revl Remove the key change lock in evaluation edition store. /prod Use SPP production key. /test Use SPP test key. /ver <version> Override the detected version. Available versions: vista, 7, 8early, 8, blue, modern. <activation id> A specific activation ID. Useful if you want to activate specific addons like ESU. /? Display this help message. 常見問題這是如何工作的? 該工具處理存儲(chǔ)在稱為“物理存儲(chǔ)”的文件中的數(shù)據(jù),Windows 使用該文件來存儲(chǔ)關(guān)鍵激活數(shù)據(jù),包括到期計(jì)時(shí)器和綁定到每個(gè)許可證的 HWID。由于我們的逆向工程工作,我們能夠?qū)⒆约旱臄?shù)據(jù)插入到物理存儲(chǔ)中,從而允許我們?yōu)?Windows 軟件保護(hù)平臺(tái)管理的任何產(chǎn)品添加自定義激活數(shù)據(jù)。物理存儲(chǔ)中的數(shù)據(jù)也稱為“受信任存儲(chǔ)”,因此得名“TSforge”。 這種方法相比其他激活方法有什么優(yōu)勢(shì)?TSforge 為激活較舊的 Windows 版本(例如 Windows 7 到 8.1)提供了最大的優(yōu)勢(shì),因?yàn)樗梢杂谰眉せ钸@些版本的任何版本,而無需修改啟動(dòng)過程或 Windows 系統(tǒng)可執(zhí)行文件。TSforge 也是唯一能夠激活任何 Windows 插件的公共激活器,使其對(duì)希望激活 ESU 許可證的用戶很有用。此外,TSforge 是唯一提供硬件固定激活的公共激活器,無需任何持久網(wǎng)絡(luò)連接、添加的服務(wù)/任務(wù)或注入的 DLL。 TLDR:只有當(dāng)您使用舊的 Windows 版本或想要激活 ESU 等插件以延長支持結(jié)束日期時(shí),您才應(yīng)該使用 TSforge。 缺點(diǎn)是什么?對(duì)于 Windows 10 和 11,建議使用 HWID 方法激活 Windows。TSforge 既不太可靠,又缺乏 HWID 提供的功能,例如在功能升級(jí)和完成作系統(tǒng)重新安裝后幸存下來的能力。對(duì)于 Windows 7 到 8.1,沒有明顯的缺點(diǎn)。 這里的任何方法都需要互聯(lián)網(wǎng)嗎?不,這里介紹的所有方法都不需要連接到互聯(lián)網(wǎng)才能運(yùn)行。一切都在本地完成。 如何在不安裝相應(yīng)產(chǎn)品密鑰的情況下安裝特定許可證?您可以使用 TSforge 中的開關(guān)來安裝許可證,只需使用激活 ID。您可以通過運(yùn)行 來獲取所有可安裝許可證及其激活 ID 的列表。您可以單擊彈出窗口并按 CTRL + C 復(fù)制所有信息。找到所需許可證的激活 ID 后,按如下方式運(yùn)行:。/igpkslmgr /dlv all/igpkTSforge.exe /igpk <activation id> 如何激活 KMS 主機(jī)服務(wù)器?您可以將 和 選項(xiàng)與要激活的 KMS 主機(jī) SKU 的激活 ID 一起使用。然后,您可以使用帶有此激活 ID 的選項(xiàng)向 25 個(gè)客戶端的 KMS 服務(wù)器收費(fèi)。請(qǐng)注意,KMS 服務(wù)器將保留其客戶端計(jì)數(shù)最多 30 天。/igpk/zcid/kmsc 為什么任何激活方法都不支持 Windows Vista?Windows Vista 包含一個(gè)驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序持有物理存儲(chǔ)的永久句柄,即使 SLSvc 未運(yùn)行時(shí)也是如此。這可以防止 TSforge 在系統(tǒng)啟動(dòng)時(shí)寫入新的受信任的存儲(chǔ)數(shù)據(jù),而不會(huì)濫用對(duì)另一個(gè)內(nèi)核驅(qū)動(dòng)程序的訪問。盡管可以離線修改物理存儲(chǔ),但這需要在 WinPE 映像中托管 TSforge,而 WinPE 映像缺少 MAS 和 TSforge 所需的許多工具和 API。到目前為止,這阻止了我們實(shí)現(xiàn) Vista 支持。 如何防止因 Windows 7 上的 WAT 而停用?如果安裝了通用密鑰,則需要運(yùn)行以刪除產(chǎn)品密鑰的唯一 ID。這將阻止 WAT 在線驗(yàn)證密鑰。安裝虛假產(chǎn)品密鑰將具有等效效果?;蛘?,您可以使用非通用密鑰繞過此檢查,盡管 WAT 會(huì)阻止許多公開可用的密鑰。TSforge.exe /duidTSforge.exe /igpk <activation id> AVMA4k 在我的虛擬機(jī)中不起作用,為什么?Windows 不支持在無法提供 Hyper-V 啟發(fā)的 VM 軟件下激活 AVMA。這主要意味著 AVMA4k 僅在正確配置的 QEMU 實(shí)例或 Hyper-V 下運(yùn)行的 VM 受支持。如果您的 VM 的激活狀態(tài)在使用 AVMA4k 后出現(xiàn)狀態(tài)代碼,則需要使用其他激活方法。Notification0xC004FD01 如何刪除此激活?運(yùn)行 Microsoft 激活腳本,選擇 > 。這將重置物理存儲(chǔ)并恢復(fù) TSforge 所做的任何更改。TroubleshootFix Licensing Microsoft 可以修補(bǔ)此問題嗎?是的,盡管有一些困難。 他們會(huì)嗎?可能不會(huì)。如果他們知道,請(qǐng)告訴我們,這樣我們就可以像一群瘋子一樣在本周剩下的時(shí)間里自嘲。 構(gòu)建說明
學(xué)分核心研發(fā)
其他貢獻(xiàn)SpCreatePackaedLicense - 工具開發(fā)、測(cè)試
特別鳴謝BetaWiki - 記錄用于逆向工程的泄露測(cè)試版
許可證該項(xiàng)目根據(jù) GNU 通用公共許可證 v3.0 的條款獲得許可。 更多介紹: 介紹2025 年是 Windows 當(dāng)前 DRM 系統(tǒng)軟件保護(hù)平臺(tái) (SPP) 推出近 20 周年。自 Windows Vista 開發(fā)初期以來,它就作為激活的主要網(wǎng)關(guān),許多人想出了巧妙的方法來欺騙它,從重置寬限期計(jì)時(shí)器到模擬 KMS 服務(wù)器再到掛接引導(dǎo)加載程序。雖然所有這些系統(tǒng)都濫用了各種激活方法,但從未有過直接攻擊 SPP 本身的漏洞......直到現(xiàn)在。 在這篇博文中,我們介紹了 TSforge,這是我們有史以來最強(qiáng)大的激活漏洞之一。TSforge 能夠激活自 Windows 7 以來每個(gè)版本的 Windows 的每個(gè)版本,以及自 Office 2013 以來的每個(gè) Windows 插件和 Office 版本,它是我們迄今為止在 MAS 中實(shí)施的最復(fù)雜、影響最廣泛的漏洞,只有我們命運(yùn)多舛的 Keyhole 漏洞才能與之媲美。除了討論 TSforge 的工作原理外,我還將討論我們發(fā)現(xiàn)和理解它所走的崎嶇道路,以及我們?cè)诖诉^程中用它做的一些有趣的事情。 SPPSPP 是一個(gè)非常復(fù)雜的系統(tǒng),涉及多個(gè)活動(dòng)部分。為簡單起見,我們將只關(guān)注與此漏洞相關(guān)的部分:
CID 技巧我們第一次出現(xiàn)通用 SPP 漏洞利用的跡象是在 2023 年,我們發(fā)現(xiàn)了一種我們稱之為“CID 技巧”的方法,它允許我們存入虛假的確認(rèn) ID。 確認(rèn) ID (CID) 是用于通過電話通過對(duì)話框或命令激活 Windows 的數(shù)值。由于可以在不連接到任何網(wǎng)絡(luò)的情況下完成手機(jī)激活,因此所有 Windows 版本和插件都至少有一個(gè)可以通過手機(jī)激活的許可渠道,包括 KMS 服務(wù)器和 ESU 插件等其他無法破解的產(chǎn)品。slmgr /atp 認(rèn)識(shí)到這一點(diǎn),asdcorp 決定研究 CID 驗(yàn)證在內(nèi)部是如何工作的。在做了一個(gè)簡單的內(nèi)存補(bǔ)丁以使提供的任何 CID 有效后,他們注意到它有一些奇怪的效果: 如視頻中所示,修補(bǔ) CID 驗(yàn)證代碼允許我們使用全由 0 組成的 CID 進(jìn)行激活。但至關(guān)重要的是,即使在通過重新啟動(dòng) sppsvc 清除補(bǔ)丁后,此激活仍然存在。對(duì)我們來說,這表明了一些非常重要的事情:無論 SPP 保存什么數(shù)據(jù)以記住它已被激活,在寫入后都不會(huì)進(jìn)行驗(yàn)證。sppobjs.dll 這對(duì)我們來說是一個(gè)非常令人興奮的發(fā)現(xiàn),因?yàn)檫@意味著如果我們可以編寫相同的數(shù)據(jù),我們就可以輕松激活 Windows 的任何副本,而無需使用調(diào)試器或利用內(nèi)核驅(qū)動(dòng)程序。對(duì)我來說更重要的是,這也意味著這種方法可以擴(kuò)展到在 Windows 7 和 8 等舊版本上運(yùn)行,在這些版本中,在運(yùn)行時(shí)修補(bǔ) SPP 代碼要困難得多。 但是,為了使此方法成為可行的方法,我們需要回答以下問題:
初始工作從之前的調(diào)查中,我們對(duì)第一個(gè)問題有了部分答案。使用進(jìn)程監(jiān)視器觀察 sppsvc,我們可以準(zhǔn)確地看到它存儲(chǔ)激活數(shù)據(jù)的位置: 在 Windows 8.1 和 10 上,我們觀察到數(shù)據(jù)主要存儲(chǔ)在以下位置:
Windows 8 幾乎相同,只是文件存儲(chǔ)在 ..datC:\Windows\System32\spp\store 然而,Windows 7 的情況卻截然不同: 在這里,我看到了對(duì)以下位置的引用:
但是,更奇怪的是,我發(fā)現(xiàn) sppsvc 不會(huì)直接寫入“7B296...”文件或 WPA 注冊(cè)表項(xiàng)。相反,它將使用 DeviceIoControl 方法調(diào)用稱為 .然后,此驅(qū)動(dòng)程序?qū)⑻幚韺?duì)“7B296...”文件和 WPA 注冊(cè)表項(xiàng)的寫入。spsys.sys 在比較這些文件和注冊(cè)表項(xiàng)時(shí),我發(fā)現(xiàn)了很多相似之處。起初,這些文件大多無趣,因?yàn)樵谒邪姹局?,這些文件似乎只是將 XML 許可證的內(nèi)容保存在一個(gè)名稱相似的文件夾中:。tokens.datC:\Windows\System32\spp\tokens “7B296...”和文件似乎起著類似的作用,因?yàn)檫@些文件不僅被加密,而且似乎還包含某種哈希或簽名。損壞或刪除這些文件將卸載所有已安裝的產(chǎn)品密鑰并重置所有其他激活數(shù)據(jù)(重置計(jì)數(shù)、KMS 客戶端計(jì)數(shù)等)。在 Windows 7 上,它還會(huì)顯示以下可愛的錯(cuò)誤消息:data.dat 撇開我如何無法獲得對(duì)自己的計(jì)算機(jī)進(jìn)行更改的授權(quán)問題不談,在安裝產(chǎn)品密鑰后,我收到了多個(gè)版本“篡改受信任存儲(chǔ)”的通知: 把所有這些放在一起,看起來就像 “7B296...”文件,它們都用作重要激活數(shù)據(jù)的存儲(chǔ),它們似乎在內(nèi)部被稱為 “可信存儲(chǔ)”。data.dat 對(duì) WPA 注冊(cè)表項(xiàng)進(jìn)行暴力篡改的類似過程表明,它們以某種方式與受信任的存儲(chǔ)相關(guān)聯(lián)。定期添加具有看似加密數(shù)據(jù)的新密鑰,以及在重大許可更改后添加。此外,由于 NtLockProductActivationKeys 函數(shù),這些密鑰是完全只讀的,無法刪除,除非您從 Windows PE 環(huán)境中弄亂它們。篡改或刪除這些密鑰會(huì)導(dǎo)致出現(xiàn)類似的“許可證篡改”錯(cuò)誤,但如果我們將這些密鑰與受信任的存儲(chǔ)文件一起從一個(gè)安裝復(fù)制到另一個(gè)安裝,sppsvc 似乎不再抱怨篡改。HKEY_LOCAL_MACHINE\SYSTEM\WPA 從所有這些工作中,我們學(xué)到了以下幾點(diǎn):
不幸的是,在很長一段時(shí)間里,我們對(duì)此知之甚少。我對(duì) sppsvc 的舊版本和新版本進(jìn)行反混淆的工作幫助我們確認(rèn)了我們的一些理論,但在不了解 的情況下,它們并沒有做出太大貢獻(xiàn)。與此同時(shí),SpCreatePackaedLicense 構(gòu)建了 CID 技巧的自動(dòng)化版本,使用自定義內(nèi)核驅(qū)動(dòng)程序來修補(bǔ) sppsvc,而無需調(diào)整其受保護(hù)的進(jìn)程狀態(tài),這對(duì)測(cè)試 CID 技巧有很大幫助。spsys.sys 不過,除此之外,我們基本上擱置了這項(xiàng)工作,轉(zhuǎn)而研究 CLiP,它似乎有更有前途的開發(fā)途徑。 當(dāng)它泄漏時(shí),它會(huì)泛濫盡管我們主要關(guān)注 Windows 盜版,但我們中的許多 MASSGRAVE 成員也對(duì)它的開發(fā)歷史感興趣,或者更具體地說,它的各種預(yù)發(fā)布 beta 版本。研究和弄亂這些版本不僅作為一種新奇事物很有趣,而且在開發(fā)過程中留下的工件可以幫助我們了解很多關(guān)于 Windows 工作原理的知識(shí)。 在與一些測(cè)試版專家討論最近泄露的 Windows 8 版本的激活機(jī)制時(shí),我不經(jīng)意間被幾個(gè)重大發(fā)現(xiàn)弄得措手不及: 盡管內(nèi)部版本 7792 和內(nèi)部版本 7850 正在開發(fā) Windows 8 的道路上,但它們的內(nèi)部版本號(hào)與 Windows 7(內(nèi)部版本 7600)足夠接近,因此我對(duì) spsys 的一些新信息充滿希望。事實(shí)上,在內(nèi)部版本 7850 的符號(hào)存檔中,我找到了 spsys 的符號(hào)以及激活子系統(tǒng)的其余部分。 Build 7792 也有一個(gè)完全未混淆的 spsys 版本,就像宣傳的那樣,但沒有符號(hào)。另一方面,Build 7850 的 spsys 具有完整的符號(hào)和完全混淆。雖然我沒能得到我的蛋糕并吃掉它,但這對(duì)仍然是一個(gè)非常幸運(yùn)的發(fā)現(xiàn),所以我決定用它來弄清楚可信商店是如何運(yùn)作的。 咒語與詛咒像往常一樣,幸運(yùn)的休息時(shí)間,這個(gè)帶有附加條件。最大的一個(gè)是,與任何其他普通的 Windows 版本不同,使用 WinDBG 進(jìn)行內(nèi)核調(diào)試在版本 7792 上根本不起作用,因?yàn)檫@是 Windows 最早的 ARM 端口之一。 因此,盡管我有一個(gè)完全去混淆的 spsys 副本,沒有任何煩人的反調(diào)試功能,但我?guī)缀鯖]有實(shí)際調(diào)試它的選項(xiàng)。由于此版本是在 QEMU 中模擬的,我仍然可以選擇使用其內(nèi)置的 GDB 調(diào)試服務(wù)器,但這將非常難以使用,因?yàn)槲冶仨氃趦?nèi)存中手動(dòng)定位內(nèi)核和驅(qū)動(dòng)程序才能執(zhí)行任何有用的作。幸運(yùn)的是,我能夠與 Rairii 取得聯(lián)系,由于他在 ARM 上模擬早期 Windows,他對(duì)這種調(diào)試方法更加熟悉。 不幸的是,我對(duì) QEMU OS 調(diào)試或 ARM 或非常低級(jí)的 Windows 內(nèi)部結(jié)構(gòu)知之甚少,所以他的建議一開始有點(diǎn)難以遵循...... 使問題更加復(fù)雜的是,我選擇為這個(gè)項(xiàng)目編寫自定義工具,使用 GDB 客戶端庫來控制 QEMU 并在加載 spsys 時(shí)自動(dòng)中斷。就像我嘗試自定義工具的大多數(shù)嘗試一樣,這最終是巨大的浪費(fèi)時(shí)間,最終甚至沒有奏效,尤其是由于我對(duì) GDB 缺乏一般經(jīng)驗(yàn)。在浪費(fèi)了更多時(shí)間嘗試通過其 Python API 向 GDB 添加 Windows 支持之后,我最終硬著頭皮選擇了我所知道的魔鬼,即 IDA Pro 調(diào)試器。 是的,對(duì)于調(diào)試內(nèi)核或調(diào)試 QEMU(或者真的任何東西)來說,它是最不“合適”的選擇,但對(duì)我來說更重要的是我熟悉它。使用我從內(nèi)部版本 7915 的符號(hào)集中抓取和修改的各種內(nèi)核結(jié)構(gòu),我能夠編寫出一個(gè)腳本,該腳本將在各種內(nèi)核函數(shù)上斷點(diǎn)并獲取重要數(shù)據(jù),例如內(nèi)核基址和加載的內(nèi)核模塊列表。通過以編程方式中斷 ,我甚至可以在加載每個(gè)驅(qū)動(dòng)程序時(shí)自動(dòng)更新模塊列表。IopLoadDriver 然而,即使有了這個(gè)監(jiān)控系統(tǒng),我仍然無法捕捉到加載的時(shí)刻。只有在檢查了其加載程序的代碼后,我才發(fā)現(xiàn)了一個(gè)有趣的調(diào)用:spsys.sysspldr.sysZwSetSystemInformation 參考 Geoff Chappell 的表格,我看到這對(duì)應(yīng)于 ,當(dāng)然,它在內(nèi)核代碼中有自己的分支,可以在不調(diào)用 .SystemLoadGdiDriverInSystemSpaceIopLoadDriver 在這個(gè)樹枝上也折斷后,我終于可以在它加載后立即接住了!spsys.sys 請(qǐng)注意,所有這些工作最終都實(shí)現(xiàn)了如果 WinDBG 正常工作的情況。無論如何,我現(xiàn)在能夠在 7792 內(nèi)部版本加載時(shí)捕獲和調(diào)試它,而不會(huì)遇到煩人的混淆和反調(diào)試。sxe ld spsys 說到混淆,我仍然需要解壓縮 Build 7850 的 spsys 才能理解它。幸運(yùn)的是,這要容易得多,因?yàn)槲铱梢运阉鲗?duì)加密函數(shù)的調(diào)用位置。 然后,我只需在內(nèi)核調(diào)試器中中斷這些調(diào)用并從內(nèi)存中轉(zhuǎn)儲(chǔ)驅(qū)動(dòng)程序,然后我就相當(dāng)輕松地解密了所有代碼。從這里開始,這只是一個(gè)通過眼睛傳輸符號(hào)的漫長過程,我終于回到了原點(diǎn)。 終于進(jìn)步了標(biāo)記所有函數(shù)后,我注意到代碼中生成受信任存儲(chǔ)文件的一種有趣模式,該文件似乎稱為“物理存儲(chǔ)”。Microsoft 似乎沒有選擇將加密數(shù)據(jù)存儲(chǔ)在單獨(dú)的緩沖區(qū)中的典型方法,而是選擇就地進(jìn)行加密。 這可能會(huì)防止某種側(cè)信道攻擊,但更重要的是,這意味著我只需在調(diào)試器中跳過此調(diào)用并讓 spsys 將未加密的內(nèi)容寫入磁盤,即可“解密”物理存儲(chǔ)。因此,我做到了: asdcorp 和 abbodi1406 立即開始工作,弄清楚數(shù)據(jù)格式以及其中存儲(chǔ)的數(shù)據(jù)類型。與此同時(shí),我專注于在 Windows 10 上復(fù)制這個(gè)技巧,在那里分析會(huì)容易得多,尤其是因?yàn)橛幸粋€(gè)實(shí)際的調(diào)試器 (x64dbg) 可用。方便的是,函數(shù) HIDHash 中有一些非常獨(dú)特的常量: 在 Windows 10 的 sppsvc 中搜索這些常量后,我在 sppsvc 中找到了相同的函數(shù): 正如我發(fā)現(xiàn)的那樣,spsys 的大部分代碼最終都包含在 Windows 10 上的 sppsvc 中。通過比較這些代碼庫,我發(fā)現(xiàn)了所有的加密、解密、簽名檢查和哈希檢查例程。在調(diào)試器中修補(bǔ)所有這些例程后,我們不僅可以讓 sppsvc 為我們解密它,還可以加載和接受我們?cè)谄渲兴龅娜魏涡薷?。data.dat 在測(cè)試這些補(bǔ)丁的過程中,我們最終找到了失傳已久的 Redpill 產(chǎn)品密鑰,Redpill 是 Windows 8 測(cè)試版的功能鎖定系統(tǒng)。 在一些實(shí)驗(yàn)和我的一些幫助下,asdcorp 設(shè)法重現(xiàn)了 CID 技巧,但這次沒有修補(bǔ) CID 驗(yàn)證例程。 從這里開始,asdcorp 和 Lyssa 找出并測(cè)試了更多的漏洞,包括一種 4000 多年來離線激活 KMS 的方法。 盡管這些結(jié)果標(biāo)志著重大進(jìn)展,但我們?nèi)匀恍枰褂谜{(diào)試器來測(cè)試這些方法,因?yàn)槲覀儫o法自己解密和重新加密物理存儲(chǔ)。因此,我的下一個(gè)任務(wù)是弄清楚如何做到這一點(diǎn)。 私鑰派生通過查看 spsys,我知道我需要派生的唯一真正密鑰是 RSA 密鑰,它對(duì)加密物理存儲(chǔ)數(shù)據(jù)的 AES 密鑰進(jìn)行加密。我還從使用 asdcorp 進(jìn)行的測(cè)試中了解到,只有兩個(gè)這樣的密鑰:一個(gè)用于生產(chǎn)/官方測(cè)試版,一個(gè)用于內(nèi)部測(cè)試/Windows Insider 版本。在沒有原始密鑰數(shù)據(jù)的情況下,我們通過一種非常先進(jìn)的方法發(fā)現(xiàn)了這一點(diǎn):復(fù)制物理存儲(chǔ)文件,編輯其版本,然后等待 sppsvc 可怕地崩潰,表明它可以解密但不能解析交換的文件。 檢查名為 的 RSA 解密例程,我發(fā)現(xiàn)了一個(gè)稱為 的字節(jié)碼系統(tǒng)的解釋器。通過大量的苦差事和正則表達(dá)式,我能夠用 Python 編寫該系統(tǒng)的模擬器。SpModExpPrvExecCodes 觀察這個(gè)模擬的輸出,我意識(shí)到所有這些混淆都掩蓋了我以前隱約聽說過的一種技術(shù),稱為加法鏈冪運(yùn)算。經(jīng)過一番思考,我意識(shí)到我可以跟蹤和轉(zhuǎn)儲(chǔ)每個(gè)模乘法的輸入和輸出,并使用它來派生私鑰。只需要 x64dbg 日志記錄和幾行 python: 最后,我擁有了從 Windows Vista 到 Windows 11 的所有 SPP 的完整生產(chǎn)密鑰。 由于模乘法的實(shí)現(xiàn)方式存在一些奇怪的差異,因此派生測(cè)試密鑰需要更長的時(shí)間,但最終,我們擁有了我們需要的所有 SPP 私鑰。 釘棺材有了私鑰,我們就能夠輕松激活幾乎任何我們想要的版本。不過,仍然存在一點(diǎn)麻煩,那就是獲取通用密鑰以啟用激活。 在 Windows 8 及更高版本上,為您想要的任何版本的任何通道生成通用密鑰都相當(dāng)簡單。但是,Windows 7 和 CSVLK(KMS 主機(jī)密鑰)直到 Server 2022 都使用 PKEY2005,這是一種更復(fù)雜的編碼系統(tǒng),需要私鑰來生成通用密鑰。由于我沒有任何加密技巧,因此我們決定解決此問題的最佳方法。 在物理存儲(chǔ)中,每個(gè)產(chǎn)品密鑰都有大型 blob,其中包含各種預(yù)先計(jì)算的信息,例如產(chǎn)品 ID 和手機(jī)激活數(shù)據(jù)。此外,我們發(fā)現(xiàn)令牌存儲(chǔ) () 還包含將產(chǎn)品密鑰與當(dāng)前版本的 Windows 相關(guān)聯(lián)的元數(shù)據(jù)。因此,我們認(rèn)為,只需復(fù)制此數(shù)據(jù)就足以欺騙 Windows 認(rèn)為已安裝密鑰,而這一次,我們是對(duì)的。tokens.dat 與此同時(shí),在為新的 CID 技巧(我們現(xiàn)在稱為 ZeroCID)開發(fā)編程方法時(shí),我們?cè)谔幚硇枰獙懭胛锢泶鎯?chǔ)的 HWID 數(shù)據(jù)時(shí)遇到了問題。最初,我們嘗試使用 GatherOsState 的 HWID 派生的 C# 端口,但在極少數(shù)情況下最終無法驗(yàn)證。由于我們幾乎沒有選項(xiàng)來調(diào)試或修復(fù)此端口,因此 asdcorp 決定創(chuàng)建一個(gè)適用于所有硬件的 HWID 值,而且它再次運(yùn)行良好,甚至允許在機(jī)器之間傳輸激活。 隨著 HWID 驗(yàn)證和 PKEY2005 的失敗,我們現(xiàn)在幾乎完全擊敗了 SPP 的離線保護(hù)。 結(jié)束語即使我們能夠使用調(diào)試器和十六進(jìn)制編輯器對(duì) SPP 造成如此多的損害,我仍然認(rèn)為它是一個(gè)相當(dāng)先進(jìn)且構(gòu)建良好的 DRM 系統(tǒng)。它的內(nèi)部結(jié)構(gòu)肯定比 Windows XP 的 DRM 有所改進(jìn),盡管有些人可能會(huì)告訴你,但 DRM 的設(shè)計(jì)相當(dāng)糟糕。它還能夠很好地保護(hù)自己免受最常見的攻擊,例如通過交換物理存儲(chǔ)文件來重置評(píng)估計(jì)時(shí)器。此外,SPP 還有一些部分我們尚未成功破解,例如用于定義其行為的簽名 XML 許可證。畢竟,并不是說有另一個(gè)微不足道的補(bǔ)丁可以繞過他們的簽名檢查...... 學(xué)分核心研發(fā)
其他貢獻(xiàn)
特別鳴謝
該文章在 2025/2/17 18:47:39 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |