本站AI自動判斷提供您所需要的app下載:點我下載安裝,你懂的APP
本篇文章給大家談談手游變速齒輪輔助工具,以及手游變態魔域的知識點,希望對各位有所幫助,不要忘了收藏本站喔。
文章詳情介紹:
為何你的游戲總是充滿不愉快,外掛到底是如何做到的
1.外掛起源外掛這個東西相信大家都不陌生,比如你剛剛回到家,累的不行,想打開電腦玩幾把游戲,結果,心態爆炸,各種自瞄鎖頭。透視。舉報了還沒用,這個就是其他的人將自己的快樂建立在你的基礎上,就大家聊聊那些反外掛的事
外掛這個事情要追溯到 2000 年。當年星際爭霸的開全圖,CS 的透視、穿墻等,讓游戲完全失去公平競技性。當時反外掛的概念也呼之欲出。而后隨著 PC 端網絡游戲的崛起,就很少要有人再去玩或者談起這些游戲,但是游戲外掛卻跟隨時代的腳步而不斷前進。
2.外掛是如何工作的先說外掛的種類,大家都知道了,脫機掛(封包掛),內存掛(調用游戲內功能,篡改游戲數據),模擬掛(模擬鍵盤鼠標代替人工操作)諸如此類
技術性分類:
1.脫機類外掛
在游戲開發過程中,每款游戲的客戶端與服務端都會有固定的通信格式,大部分游戲通信協議位于TCP層之上,自定義的數據結構,外掛開發者們稱此為封包。下面簡單列舉一個簡單的打斗封包,以方便說明脫機類外掛原理。
0000ABCD 0000DCBA 00001234 00001000
例如玩家1在與玩家2打斗過程中,發送到服務器這樣一個16字節的數據包,其中游戲開發者定義此數據包含義如下:
0000ABCD:玩家1的ID。
0000DCBA:玩家2的ID。
00001234:玩家1所使用的技能編號。
00001000:玩家1對玩家2造成的傷害,轉換為十進制為:4096。
當服務器接收到此數據包時,則會將玩家2的血量減少4096點,如果玩家血量減少后小于等于0,則判定為玩家2已經陣亡。這時服務器會返回給玩家2的客戶端一個數據包,玩家2的客戶端則播放一個玩家2已經死亡的動畫。
以上邏輯,其實存在著大量的漏洞,比如說,服務器應該判定玩家上一次釋放00001234號技能是否在冷卻時間內,再比如說,服務器應該判定玩家戰斗過程中所造成的傷害是否與其裝備、法力值、攻擊力、暴擊等相吻合,是否超過了游戲本身限制的最大傷害。類似這種漏洞,每一款游戲都會存在,只不過不會這么明顯。一些老游戲在這方面做的相對較弱,所以漏洞更多。
另外,在游戲開發過程中,數據通信的格式在游戲開發商的公司中都有相關文檔明確定義的。而這些文檔非常機密。一些游戲開發商公司的安全做的不夠好的情況下,可能會造成游戲代碼以及文檔的泄露。這些資料,一旦流入外掛開發者手中,那么這款游戲就極有可能會出現脫機式外掛。
脫機外掛定義:在不開啟游戲客戶端的情況下,第三方程序直接與游戲服務器進行通信,模擬賬號登陸驗證、選擇角色、進入游戲、進入場景、開始戰斗、對怪物造成傷害等操作時的合法數據包,發送給服務器,而服務器是沒有能力判斷出這些包是否是客戶端發來的,即便有驗證手段,由于源碼已經泄露,外掛開發者可以輕而易舉的模擬出服務端的各種驗證機制。即便數據包傳送過程中是加密的,由于源碼外漏,外掛開發者一樣可以正確模擬出數據包的加密方式。
2.模擬發包類外掛
脫機類外掛多半依賴于游戲開發商的資料外泄,而模擬發包類外掛與脫機類外掛很近似。原因是一些外掛開發者本身可能是游戲開發者出身,對游戲中的邏輯相當了解,他們可以用調試+抓包分析的方法,在沒有源碼以及通信格式資料的情況下,分析出一些游戲中關鍵的數據包,并采用一定的模擬發包技術,完成游戲中本身含有的功能。
此類外掛多半需要向游戲中注入一個dll文件,并且用dll獲取到與服務器通信的socket句柄,在此socket句柄上,將自己組織好的、合法的數據包發送到服務器。部分比較老的游戲中很常見此類的外掛,比如決戰OL中的掛機內掛中的喊話功能,自動喝藥功能,都是模擬發包方式完成的。
3、內存式外掛
在沒有游戲客戶端源碼,并且沒有一定的游戲開發經驗的情況下,依然是可以進行外掛開發的。而這些外掛開發者,一般熟練掌握操作系統的各種底層機制,如模塊、線程、內存、內核對象、內核機制等技術。這些技術,有助于他們去分析游戲客戶端進程中的邏輯和重要數據,之后他們一般會注入dll到游戲進程,去操作游戲進程內數據,完成一些特殊功能。當遇到一些改動,服務器恰好沒有校驗時,他們的外掛功能便成功執行。
三、 游戲外掛的基本原理
對于單機游戲而言:游戲中絕大部分的參數(比如血、藍、能量亦或是金幣)都存儲在計算機的堆棧中,一些類似劇情進度的則加密后寫入本地的自定義配置文件中;所以單機外掛原理是修改本地配置文件
對于頁游、網游和手游:游戲外掛通常是修改內存數據、或者截獲網絡封包。
1、修改內存數據的原理:服務器保存了大量的重要的參數,但由于客戶端不可避免的需要進行大量的計算和資源的加載,本地內存種必定存有部分的臨時變量,通過判斷這些變量的變化規律和函數的破密尋到利于自身的參數,比如傷害值一類,繼而尋找該變量的內存地址,根據指針偏移分析獲得內存基址,再提升權限利用Windows API把自定義數值寫入該內存塊,就完成了修改某項數值的操作,一般來說,只要破解了一項數值,利用規律繼而破解其他數值就更加容易了。
2、截獲網絡封包的基本原理:Internet客戶/服務器模式的通訊一般采用TCP/IP通信協議,數據交換是通過IP數據包的傳輸來實現的,一般來說客戶端向服務器發出某些請求,比如移動、戰斗等指令都是通過封包的形式和服務器交換數據。那么我們把本地發出消息稱為SEND,意思就是發送數據,服務器收到我們SEND的消息后,會按照既定的程序把有關的信息反饋給客戶端,比如,移動的坐標,戰斗的類型。把客戶端收到服務器發來的有關消息稱為RECV。接下來要做的工作就是分析客戶端和服務器之間往來的數據(也就是封包),這樣就可以提取到對我們有用的數據進行修改,然后模擬服務器發給客戶端,或者模擬客戶端發送給服務器,這樣就可以實現修改游戲的目的。
什么是封包1.1 封包的概念 本文所講的封包是指由sockets協議進行發送與接收的數據包。廣義的封包是指計算機之間互相進行通信的數據包,其可以因通信協議的不同而在內容上有所不同。1.2 破解原理 目前破解封包加密與解密算法的方法主要是通過動態調試技術來實現的。其原理是首先通過動態調試跟蹤并取出加密與解密算法的代碼段,然后再通過分析這些代碼最終得出結論。
內存掛再說內存掛,內存掛主要是對游戲數據進行驗證,比如傷害,移動速度,血量等等,打個比方,就說以前很流行的變速齒輪(CE類修改內存),早些年游戲沒有驗證的時候幾乎是想要跑多快跑多快,現在都被和諧了,和諧的方式也非常簡單,計算人物速度,再取人物的一個坐標到另一個坐標距離,這其中有一定偏差,如果差距超過設定的額度那么就可以判定玩家在使用加速工具。傷害,血值,都類似,任何數據都有算法來計算是否超過了預期最大值。
游戲應用1、 壓槍:壓槍技術很多方法可以實現,但高精度的壓槍,就需要修改內存或者網絡封包,首先獲得槍口偏移信息,然后通過鼠標移動的虛擬指令,將準星調到特定點。
2、透視:讀取內存中的數據坐標,在屏幕上繪制出應該對玩家隱藏的信息。在OBS推流時,如果選擇僅推流游戲,那么這類"信息"僅對直播者可見。
3、自動瞄頭:上兩者結合獲得,獲得玩家坐標,然后通過鼠標移動指令完成瞄頭。
總結:如果能完美無視槍口跳動時隨機的左右偏移量,那么基本可以認為是讀取內存的壓槍。對于透視的發現則難得多,但是不管裝的多像,最終目的肯定還是從這項功能收益。自動瞄頭最容易發現。
修改內存/封包類:同時秒殺多人、瞬移、一拳超人、圈外不受傷害等
總結:通過修改內存和封包實現各種喪心病狂的功能,及其容易被封號,也很容易被看出來。
反外掛與外掛的對決1、對服務器上的數據庫進行嚴格加密,并且每天自動更新隨機密碼,數據包經常檢驗,而且效驗結果以服務器上為準;
2、對游戲客戶端進行嚴格檢測,具體手段有:
(1)對關鍵api Hook進行保護,網絡相關send recv;
(2)dll注入檢測可能是hook loadlibrary,也有用定時檢測進程模塊的(找到非法模塊就退出);
(3)對于用od進行調試客戶端,還沒有完全有效的方法,一般就是加些花指令,加殼,這些方法對大量水平低的外掛作者已經足夠了;
(4)很多游戲都會對PE、OD、按鍵精靈、簡單游等進行檢測,主要是枚舉窗口名字,進程名字,有這些名字的就封殺,但這種低級方法效果不大。
(5)按鍵類外掛檢測,對于后臺腳本主要是用GetCursor,GetForegroundWindow,檢測窗口位置和鼠標位置是否正確,還有些是對WM_ACTIVE消息進行處理(神武就是這么干),對于前臺腳本除了把鼠標弄偏移外,也就沒有什么更好的辦法了,不過這個偏移對普通玩家也很不友好,也影響游戲公司留存玩家。
(6)對于有些人說檢測鼠標點擊位置的重復度,這個多半是他們自己的猜想,這樣做很容易造成誤封。
外掛技術與游戲安全性分析抵御逆向分析
除了少數通用性外掛(如鍵盤模擬外掛、通用加速掛)外,絕大部分外掛在制作前均需動態調試和靜態分析游戲邏輯和數據,找到關鍵邏輯和數據的位置,才能對游戲進行修改,因此反調試和保護游戲邏輯是抵御游戲外掛產生的強有力的方式。
阻止外掛入侵
一旦游戲關鍵邏輯與數據被黑客分析完成,接下來黑客會通過編程對游戲客戶端進行修改,修改游戲進程常常通過一些系統函數如 ReadProcessMemory,WriteProcessMemroy ,或者通過向游戲進程注入 dll 等方式修改游戲內存,因此保護游戲內存和惡意模塊掃描是進一步防止外掛和被動檢查外掛的有效措施。
游戲反外掛先行一步
Virbox 反外掛系統針對游戲安全問題,采用靜態保護和動態保護相結合的方式,抵御和打擊外掛,為端游保駕護航,目前僅支持 Windows 系統。
靜態保護(Virbox Protector)
Virbox Protector 是深思自主研發的虛擬機外殼,用于保護游戲的代碼邏輯,強大的虛擬機保護以及為 Unity 游戲設計的獨特的 Unity3D 保護,對游戲的逆向分析造成極大的阻礙,有效遏制外掛的產生。
? 代碼邏輯保護
現代反編譯工具日益強大,即使是 C/C++ 這類靜態語言編譯后的程序,也能將代碼還原到與源代碼相差無幾。沒有代碼保護,游戲客戶端的代碼邏輯暴露,很容易被黑客發現攻擊的位置,使外掛的編寫成本變得很低。
Virbox Protector 可以通過混淆、虛擬機、代碼加密等方式對游戲中指定的函數進行保護,保護后的代碼無法自動還原,黑客分析混淆和虛擬化的指令需要超過原先幾十上百倍的時間。對游戲客戶端的關鍵函數進行保護,每次客戶端更新,黑客都需要大量的時間重新分析被保護的代碼。
? 內存校驗
絕大部分外掛的高級功能都采用"內存補丁"的方式對游戲模塊進行修改,Virbox Protector 帶有內存校驗功能,能對游戲代碼進行校驗,防止被打補丁。(該功能目前不支持 Unity3D 游戲)
Unity3D 保護
Unity 游戲采用 C# 編寫,相比于 C/C++ 開發的游戲,Unity 游戲更容易被黑客分析,使用 DnSpy、Reflector 等工具可以直接反編譯 Assembly-CSharp.dll 中的代碼,游戲代碼中的變量與函數名清晰可見。
Virbox Protector 對 Assembly-CSharp.dll 中的方法都進行了加密,只有在該方法運行編譯為匯編代碼才解密,黑客無法通過 Dump 出原始代碼。
動態保護(Virbox 反外掛引擎)
Virbox 反外掛引擎是一款驅動級進程保護系統。該系統結合了主動防御(反調試、內存保護、反注入、Hook 檢測等)和被動防御(窗口檢測、內存特征掃描等),動態地保護游戲進程。Virbox 反外掛引擎的主要功能如下:
? 反調試
編寫外掛或者盜版補丁,首先要做的是使用調試器(如 OllyDbg、x64dbg、Windbg、 Cheating Engine 等)調試軟件進程,分析關鍵代碼邏輯和數據。Virbox 反外掛引擎對所保護的進程進行調試檢測,并防止內核調試器(如 WinDbg)調試 Virbox 反外掛引擎自身,使各種調試器失效,對逆向分析過程造成了極大阻礙。
? 內存保護
黑客在分析軟件時,除了調試之外,還會通過內存搜索(如使用 Cheating Engine)等方式定位關鍵數據的內存,另一方面,大部分外掛或是盜版補丁會通過另外的進程修改內存,Virbox 反外掛引擎通過驅動級內存保護,防止其它進程讀寫、修改被保護的進程,保證了被保護進程的安全。
? 反注入
修改進程內存,除了跨進程的內存訪問之外,還可以通過注入 Dll 或者 ShellCode 的方式進行,Virbox 反外掛引擎通過內存保護和監控模塊加載的方式攔截了絕大部分注入方式,并配合內存特征檢測功能,攔截非法模塊。
? 特征掃描
反外掛引擎可以檢測內存特征、窗口特征、模塊特征、驅動特征(如 HideToolz, PCHunter, StrongOD 等)
安全問題一定要引起重視,反外掛本身就是一個伴隨游戲全生命周期的問題,你所碰到的問題也是其它游戲開發商碰到的問題,你先行一步,解決好反外掛的問題,可以領先其它開發商一大步。