要理解遊戲外掛, 首先需要理解網路遊戲的資料流程。 這裡所說的資料流程定義為遊戲本地用戶端與遊戲後臺伺服器之間的資料流程通。 一個資料的產生需要玩家做出對應的操作, 然後經過網路傳輸同步到伺服器後臺, 伺服器後臺再處理過後再通過網路回饋給玩家。
在此基礎上, 可以將廣義上的外掛定義為:非法竄改遊戲資料流程的方式。 非法指的是沒有法律許可, 而竄改的方式包括增, 刪, 查, 改。
狹義上的遊戲外掛就是針對資料連結上的節點的修改。 比如竄改用戶端的“內掛”,
內掛的目標即為資料連結上的第一個節點:遊戲用戶端(包含用戶端所使用的作業系統)。
內掛的原理一般通過增,
查,
改的方式來實現,
而所使用到的工具主要有調試工具(如Ollydbg),
反彙編工具(如IDA),
記憶體查看工具(如CheateEngine)。
製作內掛,
不僅要對作業系統有理解,
而且還要深入到遊戲引擎,
遊戲邏輯。
1. 增
以使命召喚OL為例。 遊戲的設定為武器可以裝配不同的配件, 正常情況下, M4A1只能裝配2個配件。 使用調試器調試遊戲, 分析武器的配件邏輯, 可以發現:每次裝備配件時, 都會調用一個遊戲函數, 定義為AddWeaponAttachment(作者自己的定義, 下同), 而這個函數的調用參數通過不斷的調試分析可以猜測為插槽Index以及配件ID,
AddWeaponAttachment(SlotIndex, AttachmentID)
額外調用這個函數, 即增加一次遊戲邏輯的調用, 就可以實現M4A1使用多個配件。
封裝一下這個遊戲邏輯,
增加背包,
主武器,
副武器的判斷,
就可以形成一個“卡配件”的外掛。
第二個例子。
正常遊戲邏輯中,
點擊一次滑鼠會觸發一發子彈的射擊。
而在作業系統層面上,
每點擊一次滑鼠遊戲就會發送一次滑鼠點擊的消息,
如果在遊戲允許的時間範圍內增加滑鼠點擊消息的發送,
那麼就可以實現武器的子彈加速,
這種效果在霰彈槍上面即為明顯,
可以實現單發射擊的霰彈槍變成連續射擊,
武器致死率大大提升。
2. 查
查, 即讀取操作。 在遊戲中有些資訊是不會在介面上直接透露給玩家的,
以棋牌類遊戲的看牌器為例。 由於遊戲邏輯的需要, 玩家的底牌會在存放在記憶體中, 而通過記憶體查看工具不斷的變更查看條件, 就可以在記憶體中的找到對應的底牌記錄, 知道別人的底牌之後, 玩法就非常隨意了。
以FPS遊戲的方框透視為例。 遊戲邏輯會記錄戰局中所有玩家的座標資訊, 而通過指定的方法讀取到敵人的座標之後, 可以用方框將敵人在螢幕中標記出來, 掌握敵人的位置可以率先做出預判, 進一步可以做成自瞄輔助工具。
3. 改
改即修改, 即修改一切和遊戲相關的資訊, 包括遊戲資料, 遊戲代碼, 遊戲檔, 改的方法也就是內掛典型的手段。
以DNF為例子,
網路封包掛的目標即為資料連結上的第二個節點:網路資料。 用戶端的每一個處理都會以封包形式通過網路傳往網路服務器, 因此竄改網路資料和內掛會得到相同的效果。 使用到的工具即為封包查看工具(WPE PRO)。 網路封包會通過用戶端和伺服器約定的協定傳輸。 一般來說, 遊戲協定分為上下行協定, 上行協定指的是用戶端發往伺服器, 下行協定指的是伺服器發往用戶端。
1. 增
刪除在網路資料層對應的操作可以定義為攔截。 攔截對自己不利的協議。 比如在RPG遊戲中, 會消耗“水”補充體力,那麼“消耗”的動作就對應一條消耗的協議,如果攔截這條協議,那麼就可以實現不消耗“水”而獲得體力的補充。
3. 查
查即查詢。再次以RPG遊戲為例,在第一次進入某個地圖區域時,用戶端會向伺服器請求這個區域內的所有遊戲物件,包括NPC,怪,物品等,這些物件會因為遊戲劇本需要不一定能直接被玩家感知。而外掛主動向伺服器發送這個請求,直接將所有物件標記出來,説明玩家做出更優的攻略。
4. 改
改和內掛的改是一致的,直接體現就是修改封包的資料。上述的DNF全屏倍功是通過修改用戶端實現,而在封包中也可以直接修改封包資料達到相同的效果。
內掛注重的是遊戲邏輯,而網路封包掛注重的是遊戲資料。相比而言,遊戲的每一次更新都會讓邏輯代碼發生變化,而遊戲協議的變動會很小。因此網路封包掛會比內掛有效性會更長些。
封包掛的另外一個優勢就是,如果完全掌握了遊戲協議就可以實現脫離用戶端---離線掛,離線掛完全模擬了遊戲用戶端的所有操作而不佔據系統資源。在RPG遊戲中,離線掛的優勢很明顯。假設一台PC機運行用戶端一個小時可以獲取到100遊戲幣,而同時運行兩個用戶端消耗系統資源只能獲取到180遊戲幣,而同時運行10個離線掛,獲取的遊戲幣可以達到1000甚至更多。
私服實現原理私服針對的就是資料流程上的最末節點:遊戲後臺伺服器。私服即非官方的盜版遊戲伺服器。隨便在百度上搜索私服,看到的是內容粗糙,但充滿各種“神裝”的盜版遊戲。但一個私服的出現,意味著遊戲用戶端,遊戲協議,遊戲後臺伺服器處理邏輯,遊戲後臺資料庫完全暴露了。目前沒有公開的資料顯示如何製作一款遊戲的私服,私服的出現往往伴隨著遊戲代碼洩露。
在私服裡面,可以體驗到前所未有的“上帝”體驗。以CS遊戲為例子,目前公開的材料中有CS用戶端,以及CS幕後程式,雖然沒有源碼,但是可以直接調試分析CS的幕後程式,找到邏輯中判斷人物生存狀態的邏輯,實現無敵模式。
會消耗“水”補充體力,那麼“消耗”的動作就對應一條消耗的協議,如果攔截這條協議,那麼就可以實現不消耗“水”而獲得體力的補充。3. 查
查即查詢。再次以RPG遊戲為例,在第一次進入某個地圖區域時,用戶端會向伺服器請求這個區域內的所有遊戲物件,包括NPC,怪,物品等,這些物件會因為遊戲劇本需要不一定能直接被玩家感知。而外掛主動向伺服器發送這個請求,直接將所有物件標記出來,説明玩家做出更優的攻略。
4. 改
改和內掛的改是一致的,直接體現就是修改封包的資料。上述的DNF全屏倍功是通過修改用戶端實現,而在封包中也可以直接修改封包資料達到相同的效果。
內掛注重的是遊戲邏輯,而網路封包掛注重的是遊戲資料。相比而言,遊戲的每一次更新都會讓邏輯代碼發生變化,而遊戲協議的變動會很小。因此網路封包掛會比內掛有效性會更長些。
封包掛的另外一個優勢就是,如果完全掌握了遊戲協議就可以實現脫離用戶端---離線掛,離線掛完全模擬了遊戲用戶端的所有操作而不佔據系統資源。在RPG遊戲中,離線掛的優勢很明顯。假設一台PC機運行用戶端一個小時可以獲取到100遊戲幣,而同時運行兩個用戶端消耗系統資源只能獲取到180遊戲幣,而同時運行10個離線掛,獲取的遊戲幣可以達到1000甚至更多。
私服實現原理私服針對的就是資料流程上的最末節點:遊戲後臺伺服器。私服即非官方的盜版遊戲伺服器。隨便在百度上搜索私服,看到的是內容粗糙,但充滿各種“神裝”的盜版遊戲。但一個私服的出現,意味著遊戲用戶端,遊戲協議,遊戲後臺伺服器處理邏輯,遊戲後臺資料庫完全暴露了。目前沒有公開的資料顯示如何製作一款遊戲的私服,私服的出現往往伴隨著遊戲代碼洩露。
在私服裡面,可以體驗到前所未有的“上帝”體驗。以CS遊戲為例子,目前公開的材料中有CS用戶端,以及CS幕後程式,雖然沒有源碼,但是可以直接調試分析CS的幕後程式,找到邏輯中判斷人物生存狀態的邏輯,實現無敵模式。