Denuvo加密是什麼原理?怎麼保護遊戲防破解的?黑客又是怎麼破解Denuvo的?


2017年5月8日,Denuvo v4被成功利用漏洞繞過。

2017年4月24日,更新《賽伯利亞之謎3》被破解的詳情。

2017年3月3日,更新SKIDROW《殺出重圍:人類分裂》詳情

2017年2月28日,更新CPY破解原理。

2017年2月18日,本文大幅增修、重新編排,更新最新的破解情勢。

========================

簡介

Denuvo全稱Denuvo Anti-Tamper(反篡改),最早發佈於2014年,為Windows平台上能阻止對可執行文件進行調試(Debugging)、反向工程(Reverse Engineering)和修改(Modifying)的技術,由奧地利公司Denuvo軟體解決方案有限公司開發。Denuvo本身並不是DRM(數字版權管理系統,常見的DRM有Steam、Uplay和Origin等,可理解為正版授權驗證系統),而是用來保護遊戲的DRM不被繞過的。Denuvo的前身是SecuROM,那個曾經十分有效、但臭名昭著的反盜版系統。

工作原理

對於其他的加密系統,破解者只需要修改遊戲的exe或dll文件繞過遊戲對DRM的驗證,然後模擬正版環境(如特製的steam_api.dll)即可實現破解。而Denuvo就是用來保護遊戲的二進位文件(中和DRM相關的模塊)不被調試和修改的,這樣破解者就沒有辦法繞過DRM驗證從而實現防止破解。

目前關於Denuvo的詳細工作原理,目前除了開發者和頂尖黑客以外基本上無人知曉其完整的工作方式,我們只能通過破解者的討論中窺探出一些端倪:Denuvo反篡改系統主要由兩部分組成,遊戲啟動時的授權認證模塊和遊戲運行中的篡改檢測模塊,他們都是基於64位虛擬機VMProtect(這個「虛擬機」不是我們常說的那種可以運行操作系統的虛擬機,而是一種指令集翻譯機,類似於加殼一類的技術)。Denuvo會在玩家第一次啟動遊戲時把PC的硬體和操作系統信息發送至Denuvo的伺服器以取得獨一無二的認證密鑰(License)存儲在本地,每次遊戲啟動時都會檢查該授權密鑰是否和當前運行環境匹配;遊戲中內置的多處觸發器還會在遊戲運行中進行篡改檢測,一旦授權校驗失敗或檢測到了遊戲被篡改,遊戲就會終止運行或遊戲玩法發生改變。

也正是由於使用Denuvo的遊戲內埋藏的數量眾多的基於VMProtect虛擬機的觸發器,所以使用Denuvo的遊戲的可執行文件(exe)通常很大,接近100MB。與SecuRom相比,Denuvo只是把篡改檢測模塊(觸發器)放入了VM,而遊戲內容並不在VM中,使得反盜版技術對遊戲性能的影響大幅降低。

(圖片:當遊戲啟動時,如果Denuvo的認證授權模塊無法從伺服器取得正版授權時,便會彈出此窗口阻止遊戲進一步運行。此外,Denuvo還支持離線激活遊戲,圖中藍色的鏈接是Denuvo的官方伺服器,訪問它便可在其指引下獲取密鑰,完成離線激活)

早前,有報道指出,Denuvo程序對其自身持續不斷地進行加密並解密來防止被破解,從而會損傷SSD。後來Denuvo的開發公司出來澄清道「我們的反篡改技術沒有對存儲介質上的數據進行加密或者解密,這樣不但不會提高安全性,反而還會拖累性能;不影響遊戲性能是客戶(指遊戲開發商)提出的重要條件之一。『Denuvo會損傷SSD』完全是論壇上某些人腦補出來的」。

Denuvo的僱員稱其保護技術包括反篡改(Anti-Tamper)、反調試(Anti-Debugging)、反載入(Anti-Loader)和篡改檢測技術(遊戲內的篡改檢測觸發器使得破解版遊戲的玩法發生改變),這些保護技術可通過加密引擎自動部署。Denuvo反篡改技術的保護對象主要是Windows平台下由C++編寫的遊戲,由於Denuvo需要在編譯的鏈接(link)階段引入,而C#的編譯過程非常簡單,所以Denuvo對使用C#作為編程語言的Unity引擎支持的十分不理想。開發者在購買Denuvo反篡改技術後,開發者需要把他們未上市的遊戲發給Denuvo公司,Denuvo的僱員會試玩遊戲,找出在遊戲中部署觸發器的最佳位置,隨後Denuvo會向遊戲開發者提供一套自動化部署的引擎,開發者即可在遊戲中自行部署Denuvo反篡改技術,並且在遊戲的後續補丁發布時「一鍵」部署Denuvo。由於每次部署時Denuvo的核心都會重新生成,所以遊戲破解後的新補丁仍需要重新破解。

簡短概括為什麼Denuvo反篡改技術難以破解:Denuvo依賴基於代碼虛擬化技術的授權驗證模塊和反篡改模塊,這些模塊遍佈於遊戲可執行文件的各個角落(就像蟹奴寄生在螃蟹身上一樣),使得遊戲可執行文件中的遊戲原代碼、Denuvo代碼和垃圾代碼混在一起,難以分離。並且每次部署Denuvo時其植入代碼的模式(pattern)獨一無二,因此不同遊戲、甚至同一遊戲的不同版本都需要重新破解。

破解歷程

目前曾破解過Denuvo的破解組有:3DM、CPY,而有能力破解最新版Denuvo的小組只有CPY 。

早期(2014年~2015年初)使用Denuvo的遊戲,發售數月後均被CPY破解,其中未破解時間最長《墮落之王》,在發售272天後被破解。

2015年9月初,兩款大作《合金裝備5:幻痛》和《瘋狂麥克斯》均採用了Denuvo反篡改系統,但數天不到,國內破解組3DM便發現Denuvo系統中的漏洞,很快發布了這兩款遊戲的破解補丁。然而3DM的破解補丁最初只是針對遊戲啟動時的授權認證模塊進行了繞過處理,但埋伏在遊戲中的觸發器並沒有被全部處理,所以此時玩破解版遊戲的玩家會遇到各種奇奇怪怪的問題:如《合金裝備5:幻痛》的第1章和第46章會崩潰、《瘋狂麥克斯》中各種不明原因的車毀人亡、瞬間爆炸、資源清零等問題據說都是Denuvo的篡改檢測模塊導致的。

在2015年9月的兩款3A大作被破解之後,之後Denuvo修復了3DM利用的漏洞,隨後發布的《星球大戰:前線》和《正當防衛3》等遊戲在一年內都沒有被破解。Denuvo的開發者表示「雖然遊戲終究會被破解,但是Denuvo反篡改技術可被認為是成功的,因為它延長了遊戲發售到被破解的時間」。2016年2月初,3DM正式宣布放棄研究和破解Denuvo反篡改技術。

在2016年的前半年,Denuvo取得了巨大的成功,多款採用Denuvo反篡改系統的遊戲均未被破解。在此期間,有俄羅斯黑客嘗試暴力繞過Denuvo,然而遊戲中有太多的篡改檢測觸發器需要被調試和移除,所以破解工作進展緩慢,如Mkdev花了一個月時間嘗試破解DOOM,最後的結果是他僅僅破解了遊戲主界面菜單,一旦進入遊戲內容,遊戲便會崩潰。而且,更諷刺的是,由於Denuvo的授權認證模塊和PC的硬體信息綁定,所以Mkdev費盡心思破解出的「遊戲主界面」只能在特定CPU(可能還需要別的特定硬體)上才能運行。

與此同時,由於Denuvo難以被破解,國內外都興起了租遊戲的趨勢,即已購買正版遊戲的玩家在別人電腦上登錄自己的Steam賬號,共享該遊戲給此台電腦運行,遊戲便會從Denuvo伺服器上取得適用於此台電腦的正版授權,然後使用該台電腦的用戶就可以在接下來的一段時間內運行該遊戲,不過要求玩家在玩遊戲前先斷開網路,以離線模式啟動Steam。一旦玩家以在線方式啟動Steam或授權過期,玩家就不能再遊玩。Denuvo公司為了阻止玩家濫用Steam遊戲共享功能,便採取了每日激活上限的限制,同一個Steam賬號每天只能在最多5台不同的電腦上激活遊戲授權。不過這對於X寶奸商來說,這就足夠了,以賣一次離線激活20元來算,一天就是100元,這種生意不僅使得X寶奸商最多2~3天就能收回購買遊戲成本,還能幾乎無成本地大賺一筆。

(圖片:「租遊戲」的玩家在取得離線授權的一段時間之後,離線授權就會過期,此時運行遊戲時就會彈出該窗口,遊戲便不再可玩)

2016年8月6日,保加利亞人Voksi利用Steam免費試玩的漏洞(把遊戲偽裝成《毀滅戰士試玩版(DOOM Demo)》)成功繞過了Denuvo的保護機制,並發布了多款遊戲的破解補丁。採用Uplay、Origin或其它DRM的遊戲沒有被繞過。8月8日,Steam或Denuvo進行了伺服器端的修正,封鎖了此次繞過Denuvo的漏洞,至此還未破解的盜版拷貝已無法激活,已破解的盜版遊戲只能在Steam離線模式遊玩,一旦Steam上線便不再可玩。在此3天內,有60萬份盜版遊戲利用Steam漏洞在Denuvo伺服器上成功激活。

就在2016年8月9日凌晨,義大利老牌破解小組CPY發布了《古墓麗影:崛起》的完美破解補丁,破解者僅用一個30KB的dll文件便成功繞過了Denuvo的授權認證模塊並移除了遊戲內所有的篡改檢測觸發器,所以使用該補丁運行破解版遊戲時不需要Steam。在接下來的數個月中,CPY一發不可收拾,以不緊不慢的節奏持續發布各款Denuvo遊戲的破解補丁,包括了Origin上的《鏡之邊緣:催化劑》和Uplay上的《孤島驚魂:原始殺戮》,至此說明三大數字管理平台(Steam、Origin和Uplay)均已淪陷。到了2016年底,CPY發布破解的頻率逐步加快,看起來CPY不僅能輕易繞過Denuvo的授權認證模塊,還能一氣呵成地使置於遊戲中的全部觸發器失效。不過,CPY的破解方法不同於Reloaded小組成功從《俠盜獵車手5(GTA V)》的遊戲exe上徹底清除Arxan反篡改系統的代碼模塊,CPY並沒有修改遊戲可執行文件,而是通過載入特製的dll文件來修改內存,使可執行文件中的保護機制失效。也就是說CPY只是繞過Denuvo,沒有徹底地從exe上移除Denuvo的代碼模塊。CPY在每次破解前都會放出一個謎語/暗號,然後於第二天在BT站發布和謎語有關的遊戲的破解版鏡像。總的來看CPY破解遊戲的規律,該破解組更傾向於破解評價較高的遊戲、規模較大的遊戲公司的遊戲、日本系遊戲。

Denuvo公司市場銷售部的負責人在接受採訪時談到,他們對Denuvo反篡改技術保護《古墓麗影:崛起》長達6個月的時間感到滿意。每當有遊戲被破解時,Denuvo公司的僱員就會去下載破解補丁並且去研究破解者是如何成功實現破解的,然後進行反制,「這場貓和老鼠的遊戲會一直持續下去」。果然,在2016年9月發售的《PES 2017》被破解後,隨後發售的多款Denuvo遊戲並未被破解,我們不知道是Denuvo更新了其反篡改技術還是CPY破解組不喜歡那些新發布遊戲,亦或是別的什麼原因。

可是好景不長,2017年1月初,發售僅51天的《看門狗2》遭到CPY破解,而2017年1月底,《生化危機7》在發售5天後即遭CPY破解,成為最快遭破解的採用新版Denuvo加密的遊戲。這說明破解組CPY對此版本的Denuvo反篡改系統的破解流程已經達到了非常熟練、甚至是自動化的地步。Denuvo公司對此的回應「我們一直都在強調,我們的技術是難以破解而非牢不可破,至少該遊戲沒有在發售當天被破解。我們即將推出新版的反篡改系統,一如既往地針對他們的破解方法進行安全更新。至於『短時間內遭破解的遊戲會得到我們的退款』之傳言,我們公司沒有這樣的協議」。同為2017年1月底發售的《狂戰傳說(緋夜傳說)》在發售21天後被CPY破解。

2017年3月3日,沉寂已久的破解小組SKIDROW突然發布《殺出重圍:人類分裂》最新DLC的破解補丁,並且採用和CPY組不同的破解方法——直接修改exe使Denuvo失效,令遊戲可以運行。然而後來事實證明,SKIDROW並非破解Denuvo,而是把《殺出重圍:人類分裂》和《殺出重圍:缺口》的exe文件拼接到了一起。《殺出重圍:缺口》本是《殺出重圍:人類分裂》的一個遊戲模式,後來作為免費遊戲發布,沒有Denuvo。SKIDROW巧妙地把兩個遊戲的可執行文件拼接在一起,就是說把沒有Denuvo的exe的頭部(bootloader)嫁接到原遊戲exe的身體上,使得遊戲可以運行。雖然這種「破解」方法並不能複製到其他遊戲身上,但是這種思路還真是巧妙啊~

2017年3月之後,Denuvo公司為其反篡改技術進行了安全更新。據俄站黑客稱,Denuvo「幾乎徹底」地進行了改進(revamped),包括移除舊的啟動引導、用自製的虛擬機替代VMProtect以及啟動遊戲後會再次校驗CPUID等。4月13日,CPY破解的《2Dark》使用了v4版Denuvo的32位版本。

2017年4月23日,發售2日的《賽伯利亞之謎3》被破解,雖然破解不完美,但是遊戲可運行。這次的情況和之前《昨日起源》被破解的原因一樣——這兩款遊戲都使用了Unity引擎,而Unity引擎使用C#(.NET)作為開發語言。Denuvo主要針對的是C++遊戲,需要在遊戲程序編譯的鏈接(link)階段在符號文件中引入Denuvo。熟悉C#的人知道,C#的編譯過程類似於的Java,並不是直接編譯成二進位文件,而是生成MSIL中間代碼,通過 .NET Framework來執行,和C++的編譯過程完全不同。所以Denuvo無法直接植入Unity生成的exe文件,只能置入由C++編寫的遊戲外圍的DLL文件。如《賽伯利亞之謎3》的破解版無法使用控制器(手柄)遊玩,很有可能是因為支持控制器的代碼在被Denuvo保護的DLL中,沒有被破解。

2017年5月4日,CPY發布《質量效應:仙女座》v1.05的破解補丁,至此Denuvo v4 x64正式宣告破解。幾天後的5月8日,俄站exelab黑客Baldman成功利用Steam模擬器SSE和dump文件繞過Denuvo,破解《尼爾:機械紀元》和《狙擊手:幽靈戰士3》。由於破解者並未移除Denuvo的觸發器而是利用漏洞繞過之,所以存在修復可能。

破解原理

前文有提到,Denuvo反篡改技術會在遊戲內置許多檢測遊戲是否被篡改的觸發器,而這些觸發器是基於VMProtect虛擬機的。或許有人聽說過VMProtect——很多病毒、木馬程序都通過VMProtect進行加殼來逃避殺毒軟體基於病毒特徵碼的檢測。同樣的原理,想要破解Denuvo遊戲,就需要找出其特徵碼,就像殺毒軟體公司分析病毒特徵碼那般。

目前為止仍然只有CPY破解組能攻破當前版本的Denuvo反篡改技術,原因只可能是CPY成功找到了Denuvo遊戲中大量複雜的觸發器的特徵碼。觸發器是埋藏在遊戲中任意地方、用於檢測遊戲是否被篡改的校驗模塊,上文中有提到,破解者曾嘗試暴力找出(即邊玩遊戲邊觀察遊戲中的觸發器)埋藏在遊戲內的觸發器並一一幹掉,但是無奈於這些觸發器太多太複雜,手動尋找觸發器不僅處理起來極其麻煩,而且還很容易有遺漏的。然而CPY卻能在很短的時間內沒有遺漏地找到所有觸發器並用補丁使其失效,那麼說明了CPY掌握到了觸發器的特徵碼並能通過一些輔助調試軟體來快速找到這些觸發器。 可以想像的到,觸發器的特徵碼一定極其複雜難以被發現,所以只有CPY破解組能成功找到。

CPY的破解文件(steamapi64.dll)只是把所有的觸發器給禁用掉,我們不知道CPY是如何成功找出觸發器的,所以對於Denuvo的開發人員來說,他們也不知道CPY掌握到了觸發器的哪些特徵碼,因此CPY的破解方法難以在短時間內修復。這就好比,老師給你出了一道高數大題,然而你只寫了最終計算結果,老師看不到你的計算過程、不知道你是如何得出最終答案的。在《古墓麗影:崛起》被破解後,Denuvo的開發者著手嘗試修改他們自認為CPY識別出的觸發器特徵碼,然而使用v3版本Denuvo的《看門狗2》被破解的事實證明,這種修補方法並不奏效,CPY依然能繼續找出Denuvo觸發器的特徵碼。

所以,Denuvo公司要想隱藏觸發器的特徵碼,就必須得從底層重寫觸發器的構造——這就是為什麼在2017年新版Denuvo中,觸發器所依賴的虛擬機從VMProtect換成了全新的自製虛擬機。而使用v4版本的《質量效應:仙女座》的破解,證明自製虛擬機仍然有破綻。

Denuvo授權價格【未經證實但可信度較高】

Reddit/CrackStatus網友偽裝成獨立遊戲開放商,向Denuvo公司詢問一些信息,其中包括其反篡改技術的使用價格,得到的郵件回復中提到:

有兩種付費模式:

  1. 一次性支付費用的包干模式
  2. 按遊戲安裝量支付相應費用
  • 包干模式
    • AAA大作(安裝量 大於 50萬):10萬歐元
    • AA級遊戲(安裝量介於10萬到50萬):5萬歐元
    • 獨立遊戲(安裝量 小於10萬):1萬歐元
  • 按遊戲安裝量付費
    • 初始費用:2500歐元
    • 每套拷貝:0.15歐元(安裝量基於Steam等平台的月度用戶數據報告)

資料來源:Conversation with a Denuvo Employee : CrackStatus

常見誤區

  1. Denuvo反篡改技術不是DRM,是用來保護Steam等DRM的。
  2. Denuvo反篡改技術針對Windows平台的C/C++遊戲有效,不分32位/64位系統。
  3. Denuvo公司位於奧地利,原本是索尼旗下公司,現在是歐洲公司不是日本公司。
  4. Denuvo不會影響漢化,甚至不會阻止對被保護的exe的簡單修改。

參考資料

  • Denuvo官方網站:Denuvo (英語)
  • 維基百科Denuvo詞條:https://en.wikipedia.org/wiki/Denuvo (英語)
  • Reddit的破解觀察:CrackWatch ? /r/CrackWatch (英語)
  • Steam地下社區:http://cs.rin.ru/forum/ (英語、俄語)

=========

附錄:採用Denuvo的遊戲及其破解情況

  1. 《FIFA15》(CPY已破解)
  2. 《墮落之王》(CPY已破解,從發售到破解間隔272天)
  3. 《龍騰世紀:審判》(CPY已破解,新DLC無破解)
  4. 《戰地:硬仗》(CPY已破解)
  5. 《蝙蝠俠:阿卡姆騎士》(原版CPY破解,回爐版本CPY破解)
  6. 《潛龍諜影V:幻痛》(3DM不完美破解, 新版本CPY破解)
  7. 《瘋狂麥克斯》(3DM破解,新版本CPY破解)
  8. 《FIFA16》(未破解)
  9. 《星球大戰:前線》(網遊,未破解)
  10. 《正當防衛3》(CPY已破解)
  11. 《古墓麗影:崛起》(CPY已破解)
  12. 《毛線小精靈(Unravel)》(未破解)
  13. 《植物大戰殭屍:花園戰爭2》(網遊,未破解)
  14. 《紀元2205》(在DLC補丁「凍土」中引入Denuvo,新版本未破解)
  15. 《孤島驚魂:原始殺戮》(CPY已破解)
  16. 《殺手6》(CPY已破解)
  17. 《極品飛車19》(全程聯網,未破解)
  18. 《EVE: Gunjack》(VR遊戲,未破解)
  19. 《ADR1FT》(VR遊戲,未破解)
  20. 《攀爬(The Climb)》(VR遊戲,未破解)
  21. 《PURELY×CATION》(因使用「吉里吉里」開源引擎導致遊戲被解包破解)
  22. 《毀滅戰士4 (DOOM)》(CPY已破解)
  23. 《國土防線2:革命》(Denuvo未破解,開發者自行移除)
  24. 《全面戰爭:戰錘》(未破解)
  25. 《Edge of Nowhere》(VR遊戲,未破解)
  26. 《鏡之邊緣:催化劑》(CPY已破解)
  27. 《福爾摩斯:惡魔之女》(CPY已破解)
  28. 《INSIDE》(CPY已破解)
  29. 《ABZ?》(未破解)
  30. 《魔法門英雄無敵7:火之審判》(未破解)
  31. 《F1 2016》(未破解)
  32. 《殺出重圍:人類分裂》(CPY已破解,Skidrow破解新DLC)
  33. 《長途客車模擬器》(未破解)
  34. 《安特利亞英雄傳》(CPY已破解)
  35. 《噬神者2:狂怒解放》(CPY已破解)
  36. 《噬神者:解放重生》(CPY已破解)
  37. 《Damaged Core》(VR遊戲,未破解)
  38. 《實況足球(PES) 17》(CPY已破解)
  39. 《FIFA 17》(未破解)
  40. 《搖滾史密斯2014重製版》(未破解)
  41. 《WRC 6 FIA 世界拉力錦標賽》(未破解)
  42. 《戰地1》(CPY已破解)
  43. 《舞力全開2017》(未破解)
  44. 《泰坦隕落2》(未破解)
  45. 《Rock Band VR》(VR遊戲,未破解)
  46. 《Golfzon Driving Range》
  47. 《摩托英豪4(Moto Racer 4)》(未破解)
  48. 《足球經理2017》(未破解)
  49. 《Dragon Front》(VR遊戲,未破解)
  50. 《昨日起源(Yesterday Origins)》(部署有誤,發售當日即告破解)
  51. 《手球17(Handball 17)》(未破解)
  52. 《恥辱2》(未破解)
  53. 《過山車之星》(未破解)
  54. 《看門狗2》(CPY已破解)
  55. 《生化危機7》(發售後5天CPY破解)
  56. 《狂戰傳說/緋夜傳說》(CPY已破解)
  57. 《流放者柯南》(Denuvo未破解,然而開發者在某次更新中失誤推送了一個未加密版本,隨後開發者立刻推送含有Denuvo的修正更新)
  58. 《榮耀戰魂》(未破解)
  59. 《狙擊精英4》(未破解)
  60. 《幽靈行動:荒野》(未破解)

之後的遊戲不再在此更新了,完整列表可以在Denuvo Games(我維護的一個網頁,通過定時抓取Wiki上的數據實現自動更新並加以人工修正)或Denuvo - Wikipedia查到。


可能破解er們的破解動力不是為了玩這個遊戲不是為了賺盜版網站的網路流量,而就是挑戰所謂的不可破解挑戰業界巔峰挑戰同行挑戰極限呢,然後體會全球首發的快感


昨天鬥魚上3DM直播了運行破解後的古墓麗影:崛起。直播時說等和光榮的官司結束後看實際判罰情況來決定是否發布破解補丁。


KRKR引擎從核心到流程到按鈕功能,完全就是文本文檔,是不經編譯的標記式語言(類似HTML)。所以這樣的引擎用D加密就是浪費


現在國外著名破解組CPY已經宣稱徹底破解D加密,目前已經完成古墓麗影10的破解工作,即將開始破解正當防衛3等一系列大作。加上破解補丁不需要通過steam啟動遊戲,目測遊戲正版時代要推遲一段時間了。3DM之前嚴格來說並不是破解,只是通過漏洞騙過驗證程序從而導致認證為steam啟動。不過抓到老鼠就是好貓,這種方法也不錯,龍騰世紀-審判據此中招。3DM說過專攻D加密的破解工作,不過又放棄了。目前CPY的破解補丁3DM已經確認會搬運。


其實沒有盜版,正版也得不到發展


修改虛擬機參數模擬物理機,遊戲在虛擬機里安裝運行,導出鏡像副本,單機遊戲就可共享了。但是需要購買一次。


問題=[RMB製作時什麼原理,是怎麼防偽,犯罪分子又是如何製造假RMB的?]


推薦閱讀:

大學中如何改變現有混日子的狀態?
這張流程圖是用什麼軟體製作的?
微課的視頻是怎麼錄製的,ppt加黑板嗎,他們有統一的錄製教室嗎,還是老師自己錄製?

TAG:遊戲 | 軟體 | 加密 | denuvo |