外掛這個(gè)事情要追溯到 2000 年。當(dāng)年星際爭霸的開全圖,CS 的透視、穿墻等,讓游戲完全失去公平競技性。當(dāng)時(shí)反外掛的概念也呼之欲出。而后隨著 PC 端網(wǎng)絡(luò)游戲的崛起,就很少要有人再去玩或者談起這些游戲,但是游戲外掛卻跟隨時(shí)代的腳步而不斷前進(jìn)。
游戲外掛讓開發(fā)商很無奈
第一,外掛泛濫成災(zāi),最直接的受害者是開發(fā)人員,不但知識產(chǎn)權(quán)被侵害,還得疲于奔命地應(yīng)付各種外掛。
第二,外掛一旦導(dǎo)致游戲失衡,不管怎么努力,都無法擋住產(chǎn)品口碑變得越來越差,玩家不斷流失。
第三,外掛往往會捆綁木馬、植入廣告等,存在盜取游戲賬號、誘騙用戶等安全問題。
第四,所有的現(xiàn)象交織在一起,導(dǎo)致了游戲收入不斷萎縮,游戲公司生存狀況惡劣。
外掛技術(shù)與游戲安全性分析
抵御逆向分析
除了少數(shù)通用性外掛(如鍵盤模擬外掛、通用加速掛)外,絕大部分外掛在制作前均需動(dòng)態(tài)調(diào)試和靜態(tài)分析游戲邏輯和數(shù)據(jù),找到關(guān)鍵邏輯和數(shù)據(jù)的位置,才能對游戲進(jìn)行修改,因此反調(diào)試和保護(hù)游戲邏輯是抵御游戲外掛產(chǎn)生的強(qiáng)有力的方式。
阻止外掛入侵
一但游戲關(guān)鍵邏輯與數(shù)據(jù)被黑客分析完成,接下來黑客會通過編程對游戲客戶端進(jìn)行修改,修改游戲進(jìn)程常常通過一些系統(tǒng)函數(shù)如 ReadProcessMemory,WriteProcessMemroy ,或者通過向游戲進(jìn)程注入 dll 等方式修改游戲內(nèi)存,因此保護(hù)游戲內(nèi)存和惡意模塊掃描是進(jìn)一步防止外掛和被動(dòng)檢查外掛的有效措施。
游戲反外掛先行一步
Virbox 反外掛系統(tǒng)針對游戲安全問題,采用靜態(tài)保護(hù)和動(dòng)態(tài)保護(hù)相結(jié)合的方式,抵御和打擊外掛,為端游保駕護(hù)航,目前僅支持 Windows 系統(tǒng)。
靜態(tài)保護(hù)(Virbox Protector)
Virbox Protector 是深思自主研發(fā)的虛擬機(jī)外殼,用于保護(hù)游戲的代碼邏輯,強(qiáng)大的虛擬機(jī)保護(hù)以及為 Unity 游戲設(shè)計(jì)的獨(dú)特的 Unity3D 保護(hù),對游戲的逆向分析造成極大的阻礙,有效遏制外掛的產(chǎn)生。
? 代碼邏輯保護(hù)
現(xiàn)代反編譯工具日益強(qiáng)大,即使是 C/C++ 這類靜態(tài)語言編譯后的程序,也能將代碼還原到與源代碼相差無幾。沒有代碼保護(hù),游戲客戶端的代碼邏輯暴露,很容易被黑客發(fā)現(xiàn)攻擊的位置,使外掛的編寫成本變得很低。
Virbox Protector 可以通過混淆、虛擬機(jī)、代碼加密等方式對游戲中指定的函數(shù)進(jìn)行保護(hù),保護(hù)后的代碼無法自動(dòng)還原,黑客分析混淆和虛擬化的指令需要超過原先幾十上百倍的時(shí)間。對游戲客戶端的關(guān)鍵函數(shù)進(jìn)行保護(hù),每次客戶端更新,黑客都需要大量的時(shí)間重新分析被保護(hù)的代碼。
? 內(nèi)存校驗(yàn)
絕大部分外掛的高級功能,都采用“內(nèi)存補(bǔ)丁”的方式對游戲模塊進(jìn)行修改,Virbox Protector 帶有內(nèi)存校驗(yàn)功能,能對游戲代碼進(jìn)行校驗(yàn),防止被打補(bǔ)丁。(該功能目前不支持 Unity3D 游戲)
Unity3D 保護(hù)
Unity 游戲采用 C# 編寫,相比于 C/C++ 開發(fā)的游戲,Unity 游戲更容易被黑客分析,使用 DnSpy、Reflector 等工具可以直接反編譯 Assembly-CSharp.dll 中的代碼,游戲代碼中的變量與函數(shù)名清晰可見。
Virbox Protector 對 Assembly-CSharp.dll 中的方法都進(jìn)行了加密,只有在該方法運(yùn)行編譯為匯編代碼才解密,黑客無法通過 Dump 出原始代碼。
動(dòng)態(tài)保護(hù)(Virbox 反外掛引擎)
Virbox 反外掛引擎是一款驅(qū)動(dòng)級進(jìn)程保護(hù)系統(tǒng)。該系統(tǒng)結(jié)合了主動(dòng)防御(反調(diào)試、內(nèi)存保護(hù)、反注入、Hook 檢測等)和被動(dòng)防御(窗口檢測、內(nèi)存特征掃描等),動(dòng)態(tài)地保護(hù)游戲進(jìn)程。Virbox 反外掛引擎的主要功能如下:
? 反調(diào)試
編寫外掛或者盜版補(bǔ)丁,首先要做的是使用調(diào)試器(如 OllyDbg、x64dbg、Windbg、 Cheating Engine 等)調(diào)試軟件進(jìn)程,分析關(guān)鍵代碼邏輯和數(shù)據(jù)。Virbox 反外掛引擎對所保護(hù)的進(jìn)程進(jìn)行調(diào)試檢測,并防止內(nèi)核調(diào)試器(如 WinDbg)調(diào)試 Virbox 反外掛引擎自身,使各種調(diào)試器失效,對逆向分析過程造成了極大阻礙。
? 內(nèi)存保護(hù)
黑客在分析軟件時(shí),除了調(diào)試之外,還會通過內(nèi)存搜索(如使用 Cheating Engine)等方式定位關(guān)鍵數(shù)據(jù)的內(nèi)存,另一方面,大部分外掛或是盜版補(bǔ)丁會通過另外的進(jìn)程修改內(nèi)存,Virbox 反外掛引擎通過驅(qū)動(dòng)級內(nèi)存保護(hù),防止其它進(jìn)程讀寫、修改被保護(hù)的進(jìn)程,保證了被保護(hù)進(jìn)程的安全。
? 反注入
修改進(jìn)程內(nèi)存,除了跨進(jìn)程的內(nèi)存訪問之外,還可以通過注入 Dll 或者 ShellCode 的方式進(jìn)行,Virbox 反外掛引擎通過內(nèi)存保護(hù)和監(jiān)控模塊加載的方式攔截了絕大部分注入方式,并配合內(nèi)存特征檢測功能,攔截非法模塊。
? 自保護(hù)
Virbox 反外掛引擎有心跳檢測功能,檢測 Virbox 反外掛引擎自身是否被摘除,并支持與軟件本身進(jìn)行強(qiáng)綁定,如果使用 Virbox 反外掛引擎 SDK 版,強(qiáng)烈建議使用 Virbox Protector 加強(qiáng) Virbox 反外掛引擎自保護(hù)。
? 特征掃描
Virbox 反外掛引擎可以檢測內(nèi)存特征、窗口特征、模塊特征、驅(qū)動(dòng)特征(如 HideToolz, PCHunter, StrongOD 等),并且可以為開發(fā)商自定義特征庫。
安全問題一定要引起重視,反外掛本身就是一個(gè)伴隨游戲全生命周期的問題,你所碰到的問題也是其它游戲開發(fā)商碰到的問題,你先行一步,解決好反外掛的問題,可以領(lǐng)先其它開發(fā)商一大步。
申請創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!