LV. 1
GP 0

【心得】來自外掛工程師的外掛與外掛偵測機制的知識科普

樓主 t4si taida957789
GP245 BP-
大家好,我想來分享一些關於正確關於外掛的科普

在之前有位大大分享了下面這篇

【心得】科普關於外掛判定


但是其實有些不對的地方,想說我來分享一下我的觀點。
我本身從事資訊行業的,專長就是外掛這個領域,曾經開發過楓之谷、跑跑卡丁車、救世者之樹、神魔之塔、白貓Project.....等等相關遊戲的外掛程式。

切回正題!

(一) 遊戲架構:

線上遊戲會有兩種架構,一個是伺服器端,另一個是客戶端

依照遊戲的邏輯,可能會有幾種狀況:

1. 大部分的資訊給客戶端運算後,傳送到伺服器端更新
    
      十年前的MMORPG大部分都是這個架構,外掛可以透過更動遊戲程式的邏輯來影響更新的資料,例如:攻擊傷害、補血魔的量、攻擊速度.。

2. 大部分伺服器端運算好資訊後,傳送給客戶端顯示出來

      目前大部分的遊戲都採用這種方法了,黑色沙漠就是其中一個,舉例來說:黑色沙漠攻擊時,只有跟伺服器說我要攻擊了,傷害的數字、打擊成功之類的資訊是在伺服器收到要求後根據伺服器上的角色資訊來計算,最後傳送給客戶端顯示


(二)外掛的種類

外掛基本上分為幾種類型:

【更改客戶端的遊戲檔案】

    這類型的外掛通常影響上述第一種線上遊戲架構,他們更動遊戲資料後,客戶端讀取這些資料進行計算,最後傳送給伺服器。

    但是這類型的資訊通常客戶端會把運算的參數用一些雜湊函數來讓伺服器驗證是不是用了正確的參數來進行運算,如果伺服器發現參數不對,那這些更改可能就無效了

   舉個例子:在楓之谷這個遊戲中,有人會更動遊戲檔案 (Skill.wz)來更動攻擊力之類的,進而達成滿傷的結果,但是更動後,雖然客戶端打出數字,實際上卻是打空的效果,這就是伺服器檢驗不通過所造成的。 那前陣子在該遊戲有些特殊技能能有實際改動傷害的效果可能是因為他們沒有檢查到那部分而已.。
      這類方法對於像黑沙這種遊戲來說,大部分遊戲資訊的運送都在伺服器上這種的,基本上找不到什麼能改的,最多就自爽的R18裸體模組這種東西。


【更改遊戲記憶體】

    這類型的外掛,他不更改遊戲檔案,而是在遊戲運行過程中,更動記憶體來達成想要的功能。程式在運行時,遊戲的程式碼、資料都會被放入記憶體中等待執行、讀取或是寫入,外掛開發者會去找特定功能的遊戲程式碼在哪些記憶體位置中,去攔截並插入自己的程式,來達成遊戲邏輯的更動。

    舉例來說,黑沙勇士找到了取得釣魚狀態的程式位置,黑沙勇士透過呼叫這些程式,來讓人物自己自動可以放竿、拉竿.。這種類型的外掛,我們通常會去找這些基本功能的函數位置後,我們再寫程式跟遊戲做互動來達成自動化的功能(釣魚、採集 甚至是打怪 ),以釣魚來說,外掛裡面有寫著我幾秒拉竿啊,拉竿後取得拉竿輸入的字串然後呼叫按鍵功能一個一個模擬按鍵;以自動打怪來說,外掛會先取得怪物座標後,呼叫移動人物把人物移過去,人物到了後呼叫技能打怪,取得怪物資訊發現怪死了,繼續找怪 然後一直重複做這些事情

   這種外掛可以改攻擊傷害技能數值,但也受限於上述第一種遊戲伺服器架構。
   而如果是模擬功能,呼叫走路、釣魚這種,他實際上影響的是遊戲行為,就不受限了。

【攔截、更動封包】

    能影響遊戲資料的通常是手遊,手遊通常用我們平常瀏覽網站的協定來做伺服器與客戶端之間的溝通,外掛通常是一個代理伺服器,像是以前神魔之塔更改隊友牌組的代理伺服器外掛。
    另一種通常是為了提供遊戲內的資訊而開放的,希望可以透過程式化取得遊戲資料,舉例來說,我朋友之前有寫了一個納貢資料查詢系統,他利用python程式語言仿造客戶端與伺服器之間的溝通,讓程式模擬點納貢NPC的封包,解析伺服器回傳的納貢封包後,將資料上傳到網頁顯示。最後我只要每個伺服器創好帳號,我開一台伺服器每個伺服器跑一次腳本,就能取得所以伺服器納貢剩下多少數量的資料了,節省非常多資源,不用十幾開遊戲之類的。

【非侵入式的模擬按鍵】

    按鍵精靈就屬於這類,他並沒有實際侵入遊戲記憶體,而是呼叫系統本身提供的功能來模擬玩家的行為、取得截圖用圖片辨識演算法來判斷狀態。這種通常一定要開著遊戲在最上層,可能不能做其他事之類的。

     國外有個黑沙的 AutoFishing 就是透過這樣的方式自動釣魚。


(三)防外掛、外掛偵測機制

【人為偵測】
    就找GM來抓,通常找工讀生之類的來抓。

【伺服器偵測系統】
    通常是伺服器發現玩家行為有異常(攻擊力不對、攻擊太快、移動太快,半夜持續手動釣魚的行為)後,將玩家斷線、鎖定帳號之類的。黑色沙漠不確定有沒有這個機制,之前我有找到台服攻擊跟移動加速,小測一下後好像有點效果,但可能黑沙也可能只是把異常回報GM,再由GM巡邏取締也說不定。
    這部分防掛通常需要數據分析的技術,做分群啊之類來判定玩家行為是不是正常

【第三方防掛程式】
    常見的XignCode3、HackShield 、NProtect 屬於這類,他們通常是由一些防毒公司、對系統底層很了解的工程師(這算真的駭客等級了)、甚至外掛工程師所開發的。他們的原理基本上就跟外掛沒兩樣,想像成比較毒的,不會影響遊戲邏輯,幫遊戲公司找出遊戲外掛的軟體。這些軟體基本上跟駭客的木馬有87%像,像是HackShield具有遠端遙控、遠端執行程式碼的功能,你能想像裝這個等於電腦開了一個門給遊戲廠商進入呢。雖然平常肯定不會開這些功能就是了,不然應該一堆公司會被吉。這類防外掛程式通常會掃描玩家電腦的程式有沒有不該開的,比方說外掛、偵錯程式..etc,可能是用執行檔案的名稱做過濾,或是視窗的標題。那通常是原廠會把外掛提供給第三方防掛軟體的廠商,讓他們把該程式的特徵加入黑名單,然後這個外掛就會被偵測了。

那為什麼外掛照樣出現?  外掛可以改版,跟病毒一樣,他們只要找出防掛軟體用什麼當作特徵,然後想辦法把特徵去掉,就可以躲過偵測了。所以像沙士至少一個禮拜1-2個版本

---------------------------------

黑色沙漠目前來說

他們都有定期回報外掛的程式給第三方防掛來偵測,沙士每週一固定會被XignCode3偵測到就是這個原因。官方沒意外都會去買程式回報。

至於伺服器內的行為偵測應該是分析後有異常會通知GM吧,畢竟資料分析不是 0 誤判的,GM必須巡邏過濾正常玩家。

最後我個認為,黑沙算是認真在抓外掛的遊戲了,遊戲難免都會有外掛的,道高一尺,魔高一丈,現階段外掛不可能完全消失,官方真的最多只能透過這些防掛機制來提高外掛出現的時間成本而已。目前狀況來說還是OK的,所以我覺得沒必要過度罵官方不抓外掛之類的,真的不抓外掛的時候,外掛應該是滿街跑的...


以上是一個曾是外掛工程師的路人來分享心得,有任何錯誤歡迎指教,希望透過這篇文能讓大家了解一下這方面的一些小知識。


有人484都不看內文R,在這提醒,我不鼓勵外掛行為,這是我吃飯的工具,給大家一點工程師的觀點而已

----------------------------------------------------------------------------------------------------------

【閃電外掛 補充】
我其實沒什麼研究黑沙有哪些外掛,我稍微查了一下,應該是指攻擊、移動加速這部分,正常來說,伺服器應該要判定攻擊的間格,楓之谷有做這件事情,伺服器端的時間以及客戶端時間都有檢查
,黑沙移動的部分,有點像是判定平均速率,比方說女巫山頂瞬間移動,會被退回,這就是伺服器不允許移動,重置玩家的座標。 加速外掛可能是剛好沒有超過伺服器判定的時間吧,這部分只能瞎猜,如果美服被這個外掛肆虐,我相信過陣子應該就會放上檢測了。加速原理的話,沒意外是讓客戶端buff異常,這部分我不知道有沒有實作伺服器端的檢驗,有的話一定測的到,就怕沒有做....

【楓之谷外掛都不抓? 補充】
我研究楓之谷最久﹑官方其實一直都有在做回報啦,當初吸怪徹底被偵測系統逮到,連大陸外掛的西怪都不見了,只能出些特定技能的無延遲。Nexon原廠自己也開始在拓展防作弊引擎技術的開發,楓之谷現在使用的 Nexon Guard Security 就是原廠寫的。




245
-
板務人員:

1204 筆精華,07/16 更新
一個月內新增 2
歡迎加入共同維護。


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】