D加密原理解析和一點思考

前段時間在小黑和搜到了花繁紫吶吶醬的一篇關於黑神話悟空會不會使用D加密以及D加密科普的帖子,我一直也對D加密很感興趣,雖說數字版權保護同屬網安,但我本身主要是做密碼學方向的,對二進制逆向之類的方向不算完全瞭解,但是也想從一個網安專業的方向對D加密分析一番

Denuvo全稱Denuvo Anti-Tamper(反篡改),一種Windows平臺上能阻止對可執行文件進行調試(Debugging)、反向工程(Reverse Engineering)和修改的技術,由索尼旗下的一家奧地利公司開發。Denuvo本身並不是加密算法,而是用來保護遊戲的DRM不被繞過的工具包。

事實上,D加密並沒有公開技術過程,至今除了開發者沒人知道D加密的具體流程(當然部分破解者通過逆向工程,肯定掌握了它的部分技術細節),只能知道部分原理,同時D加密也在不斷迭代更新以應對這種實現細節的泄露,

DRM 開發人員和逆向工程專家莫里斯・休曼(Maurice Heumann)就曾經分析過D加密的逆向,其主要工作步驟是收集用戶系統的硬件和軟件“特徵”(比如對機器碼或者用戶信息生成哈希簽名),從而創建一個獨一無二的指紋,並生成一張“Steam 票據”。指紋和票據都會被髮回 Denuvo 的服務器,而“Steam 票據”則會被轉發到 Steam,以驗證用戶是否通過 Valve 的數字市場合法購買了遊戲。在確認所有權之後,會生成一個“Denuvo Token”,它只能在創建原始指紋的電腦上運行。這個“Denuvo Token”是 DRM 技術用來解密和在用戶電腦上執行遊戲的數據片段。遊戲在沒有這個“Denuvo Token”的情況下就無法運行,Denuvo 會定期根據系統硬件驗證指紋,以確保其仍然匹配(D加密將定期激活和連續認證作爲一個主要手段,類似於⚪神的聯網遊玩)。

電子遊戲破解的常見方法是通過逆向工程刪除exe文件中的DRM檢查,並修改電子遊戲的文件,以便在破解版本中沒有DRM檢查,任何人都可以不花錢就可以玩遊戲。D加密在當用戶從數字發行平臺安裝遊戲時,遊戲文件需要使用特定的加密文件系統功能進行即時加密。一旦加密,遊戲文件必須不能被訪問修改,即使完全訪問權限被授予,從而使破解者不可能逆向工程和刪除DRM檢查。所有解密操作都是在可信執行環境(TEE)上完成的,然後加載到內存中。因此,遊戲文件是受保護的,這將導致修改遊戲的困難,但同時,這樣也會提升CPU載荷和SSD讀寫次數,造成性能開銷,加密會有大量數據寫入內存,然後進入虛擬內存交換區,導致虛擬內存數據的不斷複寫存讀,會加重磁盤的負擔,所以低內存,低速磁盤會嚴重影響遊戲體驗的,比如說卡頓,而長此以往也會降低SSD的壽命。

在論文《Video_Game_DRM_Analysis_and_Paradigm_Solution》中,作者測試了D加密對遊戲性能的影響,與啓用DRM的遊戲相比,在沒有DRM的遊戲中,FPS平均增加8%,加載時間減少32%,.exe文件大小減少60%。這表明DRM技術對電子遊戲的性能有着巨大的影響。這將在低PC機配置系統的情況下更加明顯。

此外,我還想討論一下除了D加密以外的另一種很噁心的DRM保護方式,即永久聯網遊玩,需要持續認證的遊戲會在遊戲中途把你踢出去,如果你的網絡連接中斷了,遊戲斷開連接需要多長時間,這取決於使用的實現方式,不同的遊戲也不同。例如,《刺客信條2》會在斷網5秒後停止。遊戲公司經常爲實施這種嚴厲的措施辯護,堅稱他們的遊戲因爲其在線服務而更好,但這些藉口從來都站不住腳。例如,2015年《極品飛車》的開發者堅持認爲他們的遊戲需要在線,因爲這是一種"社交體驗"。儘管如此,我們還是無法理解爲什麼這會阻礙離線體驗,因爲之前的《極品飛車》擁有強大的多人模式,卻沒有強加在線要求。這似乎是將這種侵入性的DRM僞裝成關鍵遊戲功能的合法要求的一個隱蔽性藉口。在這種情況下,DRM本身非常成功,因爲《極品飛車》尚未被破解,而且可能永遠不會被破解。但是一旦公司決定拔掉他們服務器上的插頭,那些購買了正版的客戶就沒有辦法玩遊戲了。

在密碼學中,Kerckhoffs假設告訴我們,現代密碼學中的安全性依賴於密鑰的安全性,而不是保密系統的安全性,換言之,安全系統或保密系統應該就算被所有人知道系統的運作步驟,仍然是安全的。如上文所說,Denuvo這種貌似“滴水不漏”的加密模式,雖然使得傳統遊戲的破解方式幾乎全部失效。但對破解者而言,暴力破解Denuvo加密程序的思路仍然存在,因爲不同的檢測點混雜在遊戲啓動程序的代碼裏雖然極難分辨,數量還特別多。但這就好比排雷一樣,探測設備給力,工兵也能小心翼翼的緩慢推進。

但這就是Denuvo打的算盤,Denuvo公司也在多個場合表示過Denuvo並非完美無暇,加密程序只能儘可能的保證遊戲在銷售的黃金期內不被破解。

客觀的講,Denuvo的加密思路的確是有效的,在很長的一段時間裏黑客們拿Denuvo束手無策。當然,倒不是說黑客一點辦法都沒有,真要狠下心來大不了把Denuvo嵌入的檢測點一個個找出來——可這麼一來就變成枯燥的體力活了。Maurice Heumann,藉助 Qiling(功能強大的逆向工程框架),模擬創建了 2000 個補丁和 hooks,成功在另一臺設備(筆記本電腦)上啓動運行了有 D 加密的《霍格沃茨之遺》遊戲,但是這確實相當消耗精力。

最後,我想說的是,一個健康的遊戲市場不僅僅要有頂級的遊戲,同樣也要有不同品質,不同價格的“次級”遊戲,而PC平臺開放的特性讓破解實在太過容易,使次級、再次級以及再再次級乃至各種獨立遊戲開發者都很難在這個市場中體面的活下來,那麼就不得不選擇一個不體面的D加密來折磨大家,但在這種情況下,Denuvo起到保護PC市場的作用了嗎?似乎也沒有。因爲其相對昂貴的授權費用,使小製作的遊戲用不起,而大製作的遊戲,又因爲太影響性能而受到廣泛詬病,這些都讓Denuvo現在的處境有些尷尬。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com