所謂知己知彼方能百戰不殆,要想減少或避免外掛對遊戲的侵害,必須從根本上知曉外掛的原理,及其常用的技術手段,從而在技術手段上對其進行封堵。
一、外掛的分類
外掛一般的分爲2類,脫機式 和 內掛式。
脫機式外掛的定義:完全脫離官方發佈的客戶端程序,可以與遊戲服務器自由的進行通訊的外掛程序,這類外掛的實現是2類外掛裏最困難的,主要難點在於外掛製作者需要對遊戲的通訊協議進行充分的分析,包括解決封包的加密解密問題,使得封包合法化,這樣遊戲服務器才能接受並處理。
內掛式外掛的定義:內掛需要以官方發佈的客戶端程序爲載體,依靠客戶端程序來完成與遊戲服務器的通訊,主要通過反彙編手段分析並修改客戶端代碼後實現功能,一般通過直接調用遊戲客戶端的發包函數進行發包,或者調用遊戲客戶端的封包加密解密函數自行處理髮包收包。
二、製作外掛常用的技術手段
製作外掛一般使用的分析工具:
動態分析 OllyDbg(OllyICE)
靜態分析 IDA Pro
製作外掛一般使用的開發工具:
VisualStdio系列(VC++,VB)
Borland系列(Delphi,BCB,BC++)
中國人自己的開發工具(易語言)(編者注:此開發工具優勢在於控件種類上,有專門的用於外掛製作的控件)
製作外掛的技術要點:
鼠標鍵盤模擬技術:這類技術在RING3層可通過調用WIN32 API實現,在RING0層可通過驅動模擬鼠標鍵盤輸入來實現。按鍵精靈就採用在RING0層通過驅動來模擬鼠標鍵盤,比較底層。
Hook技術:包括API HOOK 、普通的對遊戲代碼進行HOOK等。這類技術有個特點,對目標進程的代碼會進行修改。
腳本技術:擴充外掛功能的技術之一,能讓外掛使用者編寫腳本來擴充外掛功能。
三、反外掛中常用的技術手段
反外掛一般使用的分析工具:
動態分析 OllyDbg(OllyICE)
靜態分析 IDA Pro
製作反外掛一般使用的開發工具:
依據遊戲客戶端採用的開發工具來決定。
製作反外掛的技術要點:
代碼校驗:包括磁盤代碼及內存代碼校驗,防止代碼被非法更改。
虛擬機保護:虛擬機(VM )其實就是Virtual Machine的縮寫,這裏說的VM並不是像VMWare那樣的虛擬機,而是將一系列的指令解釋成 bytecode(字節碼)放在一個解釋引擎中執行,能有效的干擾非法調試者對保護的代碼進行分析。是反外掛技術中的重中之重。
驅動保護:採用底層鉤子技術,一般採用SSDT HOOK來對遊戲進程進行保護。但這種技術有一個致命的缺陷,就是兼容性問題。
反調試:對調試過程產生干擾,阻止非法調試者進行正常的調試。反調試代碼加多後會導致兼容性穩定性出現問題。
四、一般保護的思路及步驟
防止脫機式外掛:
合理的設計封包通訊協議及對封包加密解密算法進行虛擬機保護能有效的防止脫機外掛,反脫機外掛的難度比較低。而且技術要求也不高。
防止內掛式外掛:
反該類外掛主要從代碼校驗上着手,並配合虛擬機保護,必要時候加上簡單的驅動。簡單的可以採用如下步驟處理:
(1) 將封包加密解密獨立成一個動態連接庫(DLL),供遊戲主程序調用進行封包加解密。
(2) 更換封包加密解密方式,防止破解者採用替換舊客戶端的方式進入遊戲。
(3) 反外掛功能在獨立出來的動態連接庫裏實現,在獨立出來的動態連接庫中加入對主程序代碼段校驗。建立一個新的反外掛線程來校驗代碼段,加入敵意進程或模塊的特徵檢測,對關鍵的API進行檢測。檢測到非法可以對服務器進行報告,並在客戶端主動切斷與遊戲服務器的連接。
(4) 在加密解密函數里加入對反外掛線程的檢測,檢測反外掛線程是否正常運行,如果檢測到非法情況,同樣對服務器進行報告並主動切斷與遊戲服務器的連接。
(5) 對獨立出來的DLL進行虛擬機保護(封包加解密及反外掛線程代碼)。
(6) 加入一些反調試技術。
(7) 根據實際情況採用驅動技術,對遊戲進行保護。
五、對反外掛工作的建議
反外掛工作具有長期性,複雜性等特性,故建立專門進行此類工作的軟件安全小組是必須的,及時的收集外掛後分析外掛的所使用的技術和破解反外掛系統的方式,寫出相應的檢測及防護代碼,提交後進行遊戲更新。通過不斷的完善反外掛系統,我有理由堅信,外掛會在這樣的保護措施下銷聲匿跡。
一般遊戲的反外掛保護方案
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.