一種防止在網路遊戲中使用外掛的方法
2023-09-13 07:21:15 1
專利名稱:一種防止在網路遊戲中使用外掛的方法
技術領域:
本發明涉及網路遊戲領域,尤其是涉及一種防止在網路遊戲中使用外掛的方法。
背景技術:
在網路遊戲領域,外掛是指某些人利用自己的電腦技術,專門針對一個或多個網路遊戲,通過改變網路遊戲軟體的部分程序,製作而成的作弊程序。用戶利用外掛這種作弊手段可以輕易得到其他正常用戶無法得到,或必須通過長期運行程序才能得到的遊戲效果,表現有許多種,比如在角色扮演遊戲中,使用外掛者比正常用戶奔跑快、攻擊威力加大、獲得更多的遊戲道具等,從而對遊戲本身和正常用戶都造成嚴重影響,這種使用外掛侵犯他人權利的行為是法律所不允許的,但是,目前還沒有有效的防止在網路遊戲中使用外掛的措施。
發明內容
本發明的目的在於克服了現有技術的缺陷,提供一種防止在網路遊戲中使用外掛的方法,該方法具有防範外掛嚴密、使用更新靈活的優點。
本發明所述的防止在網路遊戲使用外掛的方法的基本原理是在客戶端加入腳本引擎,登陸後從獨立的腳本服務端下載編譯成字節碼的檢測腳本和相關數據,然後啟動腳本獨立運行;所述的腳本負責與腳本服務端建立通訊UDP協議,這裡的UDP協議的基本包結構為command={word cmd ;//command typelong seq;//cmd sequence number
wordlen;//length of databyte[len] data;//command data}然後執行兩種操作定時信號和環境檢測。所述的定時信號操作用於保證客戶端腳本的存在,其需要定時向服務端發送規定的按特定規律變化的標誌信號,服務端檢查信號的有效性;所述的環境檢測主要是對客戶端運行環境的檢查,包括進程信息、線程信息、模塊列表、模塊信息、內存特徵檢查等,檢測內容由服務端指定;為保證腳本的存在,腳本必須與遊戲關聯起來,沒有腳本,客戶端就無法正確運行,由於目前腳本的win32模塊(win32api/win32process)不提供某些重要的API,因此,本發明將用C/C++編寫部分執行底層操作的腳本模塊,需要包裝的API庫包括DEBUG API,Tool Help API以及Kernel32.dll中與進程線程相關的API,上述的客戶端的腳本引擎和模塊是可以從正常更新途徑更新的,為防止外掛修改,所述的腳本模塊和引擎都必須檢查摘要是否合法。
要達到有效防止外掛的目的,必須首先檢測到外掛程序,這裡,所述的外掛檢測實際就是找到外掛程序和正常客戶端的差異,通常,比較明顯的差異就是外掛程序中調用模塊中的加解密函數時的調用堆棧不同,更大的差異則是外掛程序的進程空間和客戶端完全不同。本發明的外掛檢測的思路就是在模塊中找到加解密函數的調用堆棧和計算進程空間中特定偏移位置的代碼的校驗和,利用調用堆棧和校驗和可以發現外掛與客戶端的特徵,發現特徵後,可以通過正常的遊戲數據包,將特徵發送到服務端,由服務端與客戶端的特徵比較,發現外掛後就可以進行處理。為防止外掛程序模擬特徵,特徵數據需要與遊戲數據一起加密,防止外掛篡改。
本發明所述的防止在網路遊戲使用外掛的方法的特點是協議加密的更新,包括算法和密鑰的更新變得非常簡單,只需要更換存放在服務端的客戶端彙編模塊和/或服務端加解密動態連結庫。加解密模塊中可以加入外掛檢測功能,由於模塊可以隨時更新,反外掛措施也可以隨時更新,避免被外掛程序發現和模擬。在更新外掛檢測時,已經實現在不更新服務端加解密動態連結庫和重啟服務的情況下,僅更新客戶端模塊,進一步增加了反外掛措施的更新頻度,由於更新在後臺進行,用戶不會察覺,客戶端不存在加密部分,外掛開發者無法進行靜態分析。
下面參照附圖和具體實施方式
對本發明的防止在網路遊戲使用外掛的方法作進一步詳細說明。
圖1是本發明的應用系統結構圖;圖2是本發明的應用流程圖;圖3是本發明的具體實施示意圖;具體實施方式
圖1是本發明的應用系統結構圖,由圖可知,本發明的防止在網路遊戲使用外掛的方法在實施時,其系統結構包括遊戲用戶、客戶端、遊戲更新下載伺服器、遊戲認證伺服器、遊戲世界伺服器、遊戲資料庫和反外掛伺服器。所述的客戶端和所述的伺服器端實現協商調用接口,主要是指調用加解密函數的接口,並且都需要使用C/C++編寫部分執行底層操作的腳本模塊而成的API庫,所述的服務端在客戶端要求下載加解密模塊時,需要從存放在服務端指定目錄下的多個模塊中隨機選擇一個傳送給客戶端,這裡的模塊加入了遊戲開發項目,在本系統結構中,如果要實現反外掛功能,需要在客戶端發送到服務端的全部或部分數據包中增加附加欄位,以容納外掛特徵信息,服務端發送到客戶端的部分數據包中也要增加欄位或使用序列號傳送外掛檢查信息;如果要實現反方法加速類通用加速工具的功能,需要在服務端發送到客戶端的部分數據包中增加欄位或使用序列號傳送服務端時間戳;如果要實現反封包加速工具的功能,需要在客戶端發送到服務端的全部數據包中增加欄位或使用序列號傳送客戶端時間戳。
圖2所示的是本發明的防止在網路遊戲使用外掛的方法的具體應用流程首先進行客戶端更新,並且在客戶端加入腳本引擎,登陸後從獨立的腳本服務端下載編譯成字節碼的檢測腳本和相關數據,在客戶端發送到服務端的全部或部分數據包中增加附加欄位,以容納外掛特徵信息,而且在服務端發送到客戶端的部分數據包中也要增加欄位或使用序列號傳送外掛檢查信息,在所述的服務端發送到客戶端的部分數據包中增加欄位或使用序列號傳送服務端時間戳,在客戶端發送到服務端的全部數據包中增加欄位或使用序列號傳送客戶端時間戳。然後,啟動腳本獨立運行,所述的腳本負責與腳本服務端建立通訊協議,為了保證腳本線程的存在,需要加入HeartBeat定時信號,基本思路是服務端下發一個數據,客戶端腳本根據規定算法和當前狀態得到一個計算值返回服務端,服務端再檢查計算值是否正確,所述的加入HeartBeat定時信號通過一種最簡單的算法來實現,就是服務端下發一個隨機數,腳本用自己的校驗和加上隨機數產生一個摘要,返回給服務端,後續的HeartBeat定時信號用隨機數作為種子產生下次發送時隨機數。然後進行檢測操作,這主要是對客戶端運行環境的檢查,包括進程信息、線程信息、模塊列表、模塊信息、內存特徵、計算指定偏移位置和長度的代碼校驗和、模塊列表以及外掛/木馬/病毒程序特徵碼等等,服務端解密函數檢查這些信息並得出是否使用了外掛的結論,一旦確認使用了外掛,就立即將用戶加入封號列表,等待一段時間以後執行強制下線和封號懲罰。
圖3所示的是本發明的一個具體實施例,以網路遊戲七劍為例,首先在網遊方面,客戶端使用/Oy-編譯選項,保證客戶端程序中的函數均使用幀指針,服務端和客戶端適當增大網絡收發包的緩衝區,本發明需要在數據包尾部增加欄位記錄(8個字節),以記錄前面獲得調用堆棧和環境檢查信息並發送到服務端,4個字節用於記錄調用堆棧、4個用於記錄內部序列號和校驗和等信息,然後,客戶端和服務端調用加解密函數庫,執行加密函數時,會以一定規律在數據包中加入命令(服務端)和檢測結果(客戶端),然後,用戶登陸遊戲伺服器時,遊戲服務將向用戶發送隨機選擇的動態加解密模塊,從而實現通訊數據包的可靠高效的加密和解密,通過回溯客戶端調用鏈,得到加密和解密函數的調用堆棧,然後,執行服務端加密函數在數據包中發送的命令,通過分析配置文件和服務配置文件,檢查客戶端的進程環境,最後,中心分析服務端解密函數檢查這些信息並得出是否使用了外掛的結論。
以上所述的僅是本發明的優選實施方式。應當指出,對於本領域的普通技術人員來說,在不脫離本發明原理的前提下,還可以作出若干變型和改進,這些也應視為屬於本發明的保護範圍。
權利要求
1.一種防止在網路遊戲中使用外掛的方法,其特徵在於包括以下步驟首先進行客戶端更新,並且在客戶端加入腳本引擎,登陸後從獨立的腳本服務端下載編譯成字節碼的檢測腳本和相關數據,在客戶端發送到服務端的全部或部分數據包中增加附加欄位,以容納外掛特徵信息,而且在服務端發送到客戶端的部分數據包中也要增加欄位或使用序列號傳送外掛檢查信息,在所述的服務端發送到客戶端的部分數據包中增加欄位或使用序列號傳送服務端時間戳,在客戶端發送到服務端的全部數據包中增加欄位或使用序列號傳送客戶端時間戳,並且啟動腳本獨立運行;然後,服務端下發一個數據以加入定時信號,客戶端腳本根據規定算法和當前狀態得到一個計算值返回服務端,服務端再檢查計算值是否正確,後續的定時信號用隨機數作為種子產生下次發送時隨機數;最後,服務端解密函數開始對客戶端運行環境進行檢查,並得出是否使用了外掛的結論,一旦確認使用了外掛,就立即將用戶加入封號列表,等待一段時間以後執行強制下線和封號懲罰。
全文摘要
一種防止在網路遊戲中使用外掛的方法,其步驟為在客戶端加入腳本引擎,並且從獨立的腳本服務端下載編譯成字節碼的檢測腳本和相關數據,然後在傳送的數據包中增加容納外掛特徵信息的附加欄位,然後在服務端下發一個數據以加入定時信號,然後服務端解密函數對客戶端運行環境進行檢查,並得出是否使用了外掛的結論。該方法具有防範外掛嚴密、使用更新靈活的優點。
文檔編號G06F19/00GK1744525SQ200510104918
公開日2006年3月8日 申請日期2005年9月22日 優先權日2005年9月22日
發明者車欠軍 申請人:車欠軍