一、外掛的分類
外掛一般的分為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) 根據實際情況采用驅動技術,對游戲進行保護。
五、對反外掛工作的建議
反外掛工作具有長期性,復雜性等特性,故建立專門進行此類工作的軟件安全小組是必須的,及時的收集外掛后分析外掛的所使用的技術和破解反外掛系統的方式,寫出相應的檢測及防護代碼,提交后進行游戲更新。通過不斷的完善反外掛系統,我有理由堅信,外掛會在這樣的保護措施下銷聲匿跡。