一位遊戲人關於遊戲反外掛程式的雜談

2021-09-08 23:43:00 字數 3457 閱讀 8497

1.遊戲外掛程式分類

⑴按實現方式

㈠離線式

完全脫離遊戲客戶端程式,可以與遊戲伺服器自由通訊的外掛程式,開發難度最大,普通的100多開,對遊戲的危害最大,嚴重破壞遊戲市場、影響玩家正常遊戲、縮短遊戲運營週期。

㈡內掛式:

以遊戲客戶端程式為載體,依靠客戶端程式來完成與遊戲伺服器的通訊

①呼叫遊戲相關功能函式為主

②呼叫遊戲明文發包函式為主

此內掛開發流程基本與①相同, 只是主要掛機功能函式通過外掛程式組織明文包直接呼叫明文發包函式實現。目前此類外掛程式製作方式越來越流行,原因如下:

a。 遊戲的中的怪物、技能等資料結構越來越複雜(多級鍊錶方式、多叉樹方式等等)、功能函式越來越難回溯(加花、seh保護、vmp保護等等),逆向分析相對比較困難,而直接從hook的明文包分析相關資料及實現相關函式功能反而比較容易;

b。 如果遊戲交易比較火,再逆向出遊戲加解密函式、離線登陸流程、加入自動尋路演算法等等,離線版本誕生。

③按鍵為主

除按鍵指令碼類,其它按鍵內掛開發流程基本與①相同,只是主要掛機功能函式通過模擬按鍵方式實現

⑵按使用者型別:

㈠普通玩家

此類掛主要通過點卡、月卡等方式向普通玩家銷售,一般海闊天空、外掛程式999、592外掛程式等外掛程式**及**都可見其蹤影。

㈡打錢工作室

此類外掛程式由某工作室定製或只向工作室銷售,由乙個工作室買斷,或少數工作室共用。

2.反外掛程式雜談

⑴一些常規反外掛程式關注點及個人建議

㈠離線掛以及內掛開發首先必須解決遊戲反除錯保護,目前主流思想是驅動層進行偵錯程式程序檢測、標誌位檢測,hook重要函式等方法以及給遊戲執行檔案加猛殼利用殼的功能實現反調。

個人觀點:驅動保護方法可大大提高外掛程式的製作門檻,但綜合效果卻並不是很好。驅動開發代價高昂、破壞遊戲的相容性和穩定性、對於專業的外掛程式團隊根本無效。君不見dnf的玩家掛、工作室掛,aion的離線掛依然很安逸地掛著。普通外掛程式開發團隊或自己分析或通過購買工具方式解決驅動保護,頂尖的開發團隊的技術人員可能比國內90%以上的遊戲公司反掛技術人員都要多而且更專業解決驅動保護也是不在話下。有財力有技術實力的大公司可以加入驅動保護,中小遊戲公司還是能免則免吧,簡單的驅動起不到效果、複雜的驅動功能完善且相容性、穩定性好可不是容易的事,況且底層的操作也不是必須的,相關的操作放到ring3層處理、搞點猥瑣手段效果亦不錯。

㈡對遊戲的啟動引數進行加密(針對離線掛及智慧型工作室內掛)。

個人建議: 啟動引數加密是比較容易忽視的地方,加密函式中利用gettickcount之類獲取變參,靈活應用登錄檔或檔案操作,判斷遊戲是否從官方程式啟動,再對相關**段vmp

㈢檢測防多開(針對離線掛及智慧型工作室內掛)

個人建議:多開檢測也是比較容易忽視的地方,很多遊戲只是乙個簡單的findwindow、createmutex,有等於無,此處應多方法靈活處理,vmp依舊是必須的

㈣**完整性校驗

個人建議:crc之類演算法對自身的完整效驗勾掛函式的完整效驗,一些重要**段另外單獨校驗,校驗相關**段vmp,必要的話返回伺服器中驗證

㈤遊戲登陸相關封包處理

個人建議:遊戲的登入封包盡量複雜化,不同的封包型別中部分資料採用多重加密是必要的,多個埠亂序通訊,這些登陸分包是一次性的不用太擔心演算法效率問題,而此操作卻可以大大增加逆向難度;另簡單說明一下,如很多遊戲登陸會使用md5進行相關驗證,但多是直接對密碼進行加密,逆向者用peid 的krypto analyzer知道用了這個演算法,到網上隨便找個md5演算法不用修改就能通過,效果甚微,而如果從伺服器下發部分隨機金鑰a再與本地固定金鑰b與密碼組成金鑰c再用md5加密,在md5加密的基礎上再加個可逆演算法處理,這樣驗證強度就強多了,本人初次逆這樣個流程時候就覺得很痛苦,再vmp下,嘿嘿效果就達到了

㈦客戶端失去響應

個人建議: 一定時間客戶端沒有反應斷開連線,這個時間能短就短,除錯過的都知道,這樣除錯起來痛苦多了

㈧答題機制

個人觀點:答題實現起來容易,卻可以大大增加寫外掛程式的難度、成本。

目前外掛程式應對方法

a:演算法解析

b: 自建相簿

c:人工答題(工作室掛一般都把傳到指定答題機器上)

所以本身要處理的複雜點,噪點之類多多益善,基本斷絕演算法解析的希望;經常更新,或者寫個小演算法乙個重複使用,讓外掛程式的相簿成為雞肋,把外掛程式逼到人工答題這條路上,這樣外掛程式難度、工作室成本就上去了,老規矩驗證相關**vmp。

⑵綜合反外掛程式

曾經看到乙個說法「做外掛程式與反外掛程式技術上是對等的,完全靠技術手段是反不住外掛程式的,最好的反外掛程式系統是遊戲本身」,對此,我深表認同。反外掛程式應該從策劃、技術、法律等多方面進行。

㈠策劃方面:

rpg類個人比較推崇征途、劍俠類似的模式

a:打怪獲取經驗較低,遊戲自帶內掛,解決了很多沒時間練級的玩家需求

(我就屬於此類玩家,願意花錢去玩遊戲,但沒空玩遊戲,購買高階賬號總是被無恥賣家找回,還搭上裝備,默哀下…);從反外掛程式的角度,我建議此類遊戲內掛帶最基本的掛機功能即可,吃藥的、撿物的、技能的通通不帶,應讓此功能成為內掛開發者的雞肋,不然開發內掛可就容易多了

b:遊戲中打怪、極大部分任務獲取的遊戲幣是繫結的,繫結遊戲幣購買的物品同樣是繫結的,可用於交易的貨幣只有有限的途徑可以獲取,目前我接觸到得幾個這類模式的遊戲,工作室都是靠這些有限的途徑打錢,官方一次大變動就可能導致外掛程式作者放棄或工作室放棄。

聰明的策劃朋友們,發揮你的想象力,在遊戲內容、遊戲模式上多下功夫

㈡技術方面:

上面已經羅列了一些技術方面關注點,再者我認為單純靠技術是防不住外掛程式的,就結合遊戲、外掛程式再簡單介紹下

遊戲的交易、鑲嵌、郵寄等系統必須嚴格檢測:

現在的遊戲市場競爭激烈,出現大的公開的此類漏洞可能直接毀掉遊戲,若是自己公司開發的遊戲,有可能的話直接**層的審查,邏輯檢測、溢位檢查、對不正常的資料判斷等等,對於無法看到**的遊戲通過逆向明文發包函式、分析出相關報文結構,用錯誤的邏輯、特殊處理的封包對這些系統進行完全檢測(伺服器是否可以對這些明顯封包異常做些懲罰措施?)。

內掛多是注入dll到遊戲程序中,新起個外掛程式主線程,工作室內掛控制台的實現,可否根據其實現過程、特點(主視窗控制代碼類名、執行緒id等等)做些對應措施?

除去伺服器驗證,遊戲的另一張王牌強制更新是否妥善利用,內掛開

發者怕遊戲更新什麼、離線掛開發者又怕遊戲更新什麼?

對於p2p類的網遊,極盡你的能力在反調、隨機函式保護、屬性驗證

方面下功夫吧,不然什麼樣的bt功能不能實現?

㈢法律方面:

在沒有法律壓力下,南韓遊戲不是已經完全淪陷於國內外掛程式團隊之手?讓歐美遊戲玩家驚呼hacker的背後又如何能缺得了國內外掛程式團隊?國內外掛程式團隊又何以如此囂張?

遊戲公司是否可以聯合打擊外掛程式介紹銷售站點、外掛程式製作交流站點?

反外掛程式技術人員可以充分挖掘外掛程式的相關資訊,必要時候請police,若是能抓住個外掛程式開發者,效果是絕對震撼的。

結束語反外掛程式工作具有長期性,複雜性等特性,故建立專門進行此類工作的軟體安全小組是必須的,及時的收集外掛程式後分析外掛程式所使用的技術和破解反外掛程式系統的方式,寫出相應的檢測及防護**,提交後進行遊戲更新。通過不斷的完善遊戲、完善反外掛程式系統,策劃、法律多方面結合,我有理由堅信,外掛程式會在這樣的保護措施下銷聲匿跡

關於騰訊遊戲的反外掛程式保護來乙個總結

ring3 和ring0 全部做了措施,檢測輔助開發階段除錯工具 和 hook 核心api 可以和部分防毒軟體相比了。它又分為兩點。1 檢測程序上的模組名 包括程序的路徑和模組路徑上出現的敏感字 2 檢測程序介面上的控制項名和視窗名上的敏感字 所表現的常見現狀 比如 一開啟ce或ve,還沒載入上遊戲...

遊戲反外掛程式的一些建議和想法

在程式設計中,通常使用8位,4位,2位或者1位記憶體來儲存數值。比如單機遊戲中,生命數用整數型變數儲存,使用記憶體修改工具多次掃瞄記憶體變動情況,即可較容易找到變數記憶體位址,修改或者鎖定相應的記憶體位址即可達到作弊的目的。使用單變數儲存的方式很容易因數值變動,被快速定位記憶體位址。為避免這種情況,...

一位底層遊戲建模師的內心獨白

一開始入行的時候,以為3d遊戲建模非常簡單,畢竟在學校的時候,自學過一些,懂了一點基礎,做這行,還不是手到擒來?但是我錯了,其實自學的那些知識都是非常膚淺的,當我真正融入工作時,才知道我引以為傲的3d知識都只是皮毛。畢業生剛開始工作的時候,很多東西都不是我們能夠選擇的 比如好的公司,我也看過很多關於...