常见游戏外挂分类及原理概述
外掛基本概念
要理解外掛,首先需要理解網絡游戲的數據流。這里所說的數據流定義為游戲本地客戶端與游戲后臺服務器之間的數據流通。一個數據的產生需要玩家做出對應的操作,然后經過網絡傳輸同步到服務器后臺,服務器后臺再處理過后再通過網絡反饋給玩家。
在此基礎上,可以將廣義上的外掛定義為:非法竄改游戲數據流的方式。非法指的是沒有法律許可,而竄改的方式包括增,刪,查,改。
狹義上的外掛就是針對數據鏈路上的節點的修改。比如竄改客戶端的“內掛”,竄改網絡數據的“脫機掛”,竄改游戲后臺服務器的“私服”。
內存掛實現原理
內掛的目標即為數據鏈路上的第一個節點:游戲客戶端(包含客戶端所使用的操作系統)。內掛的原理一般通過增,查,改的方式來實現,而所使用到的工具主要有調試工具(如Ollydbg),反匯編工具(如IDA),內存查看工具(如CheateEngine)。制作內掛,不僅要對操作系統有理解,而且還要深入到游戲引擎,游戲邏輯。
1. 增
以使命召喚OL為例。游戲的設定為武器可以裝配不同的配件,正常情況下,M4A1只能裝配2個配件。
?
使用調試器調試游戲,分析武器的配件邏輯,可以發現:每次裝備配件時,都會調用一個游戲函數,定義為AddWeaponAttachment(作者自己的定義,下同),而這個函數的調用參數通過不斷的調試分析可以猜測為插槽Index以及配件ID,即:
AddWeaponAttachment(SlotIndex, AttachmentID)
額外調用這個函數,即增加一次游戲邏輯的調用,就可以實現M4A1使用多個配件。
?
封裝一下這個游戲邏輯,增加背包,主武器,副武器的判斷,就可以形成一個“卡配件”的外掛。
?
第二個例子。正常游戲邏輯中,點擊一次鼠標會觸發一發子彈的射擊。而在操作系統層面上,每點擊一次鼠標游戲就會發送一次鼠標點擊的消息,如果在游戲允許的游戲買賣時間范圍內增加鼠標點擊消息的發送,那么就可以實現武器的子彈加速,這種效果在霰彈槍上面即為明顯,可以實現單發射擊的霰彈槍變成連續射擊,武器致死率大大提升。
2. 查
查,即讀取操作。在游戲中有些信息是不會在界面上直接透露給玩家的,但是玩家一旦掌握這些信息就會獲得絕對的優勢。
以棋牌類游戲的看牌器為例。
?
由于游戲邏輯的需要,玩家的底牌會在存放在內存中,而通過內存查看工具不斷的變更查看條件,就可以在內存中的找到對應的底牌記錄,知道別人的底牌之后,玩法就非常隨意了。
以FPS游戲的方框透視為例。
?
游戲邏輯會記錄戰局中所有玩家的坐標信息,而通過指定的方法讀取到敵人的坐標之后,可以用方框將敵人在屏幕中標記出來,掌握敵人的位置可以率先做出預判,進一步可以做成自瞄輔助工具。
3. 改
改即修改,即修改一切和游戲相關的信息,包括游戲數據,游戲代碼,游戲文件,改的方法也就是內掛典型的手段。
以DNF為例子,玩家在攻擊的時候會有攻擊力的疊加。同樣通過調試分析,找到角色攻擊函數,定義為Attack(Target, Power),參數表示攻擊的對象以及攻擊力,外掛可以修改這個Attack函數,使得Target為當前區域內所有怪物,Power為無窮大,那么Attack的效果即為全屏倍攻。
?
以FPS游戲為例,游戲在渲染圖像的時候會使用Windows的DiretX模塊(DX游戲)。一般來說,在渲染每一幀的時候游戲邏輯會根據由遠到近的順序將當前屏幕內所展示的圖像渲染出來,在最終呈現時會根據物體的遮擋關系真實的反映出當前場景,最終覺得當前所看到的畫面。外掛可以修改DirectX的渲染邏輯,強制將遮擋關系修改,那么原本應該被遮擋的物體會在屏幕上顯示出來,形成人物透視。
?
制作內掛需要對游戲邏輯和操作系統有一定的認識,必須有扎實的匯編閱讀能力以及豐富的腦洞能力,不斷的閱讀,不斷的猜想,不斷的組合才能形成功能強大的外掛。
網絡封包掛實現原理
網絡封包掛的目標即為數據鏈路上的第二個節點:網絡數據。客戶端的每一個處理都會以封包形式通過網絡傳往網絡服務器,因此竄改網絡數據和內掛會得到相同的效果。使用到的工具即為封包查看工具(WPE PRO)。網絡封包會通過客戶端和服務器約定的協議傳輸。一般來說,游戲協議分為上下行協議,上行協議指的是客戶端發往服務器,下行協議指的是服務器發往客戶端。
1. 增
以CF為例。通過WPE分析游戲內購買武器的協議,游戲的上行協議是請求游戲商城指定武器,游戲的下行協議是服務器告訴客戶端指定武器購買是否成功。
那么偽造一條游戲下行協議,里面包含指定武器購買成功的信息,無中生有,那么個人倉庫內會多出對應的武器。
?
2. 刪
刪除在網絡數據層對應的操作可以定義為攔截。攔截對自己不利的協議。比如在RPG游戲中,會消耗“水”補充體力,那么“消耗”的動作就對應一條消耗的協議,如果攔截這條協議,那么就可以實現不消耗“水”而獲得體力的補充。
3. 查
查即查詢。再次以RPG游戲為例,在第一次進入某個地圖區域時,客戶端會向服務器請求這個區域內的所有游戲對象,包括NPC,怪,物品等,這些對象會因為游戲劇本需要不一定能直接被玩家感知。而外掛主動向服務器發送這個請求,直接將所有對象標記出來,幫助玩家做出更優的攻略。
4. 改
改和內掛的改是一致的,直接體現就是修改封包的數據。上述的DNF全屏倍功是通過修改客戶端實現,而在封包中也可以直接修改封包數據達到相同的效果。
內掛注重的是游戲邏輯,而網絡封包掛注重的是游戲數據。相比而言,游戲的每一次更新都會讓邏輯代碼發生變化,而游戲協議的變動會很小。因此網絡封包掛會比內掛有效性會更長些。
封包掛的另外一個優勢就是,如果完全掌握了游戲協議就可以實現脫離客戶端---脫機掛,脫機掛完全模擬了游戲客戶端的所有操作而不占據系統資源。在RPG游戲中,脫機掛的優勢很明顯。假設一臺PC機運行客戶端一個小時可以獲取到100游戲幣,而同時運行兩個客戶端消耗系統資源只能獲取到180游戲幣,而同時運行10個脫機掛,獲取的游戲幣可以達到1000甚至更多。
私服實現原理
私服針對的就是數據流上的最末節點:游戲后臺服務器。私服即非官方的盜版游戲服務器。隨便在百度上搜索私服,看到的是內容粗糙,但充滿各種“神裝”的盜版游戲。但一個私服的出現,意味著游戲客戶端,游戲協議,游戲后臺服務器處理邏輯,游戲后臺數據庫完全暴露了。目前沒有公開的資料顯示如何制作一款游戲的私服,私服的出現往往伴隨著游戲代碼泄露。
在私服里面,可以體驗到前所未有的“上帝”體驗。以CS游戲為例子,目前公開的材料中有CS客戶端,以及CS后臺程序,雖然沒有源碼,但是可以直接調試分析CS的后臺程序,找到邏輯中判斷人物生存狀態的邏輯,實現無敵模式。
?
總結
以上是生活随笔為你收集整理的常见游戏外挂分类及原理概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 程序暂停_java程序运行过程
- 下一篇: 工业网关作为数据采集、数据转发的重要设备