最新資訊
科技新聞

雲端混合專家,提供全方位雲端顧問服務

科技趨勢

這些遊戲作弊想防也防不住!多人線上遊戲開發者必知的資安概念,以及 7 個預防玩家作弊的最佳實踐

 

遊戲是現在最受世界歡迎的娛樂形式,根據遊戲市調公司 Newzoo 的調查,到了 2023 年全球會有超過 30 億位遊戲玩家,而詐欺者的數量也隨著多人遊戲的蓬勃而增加。 

一個來自紐約時報的研究指出,幾乎有 50% 的電腦玩家承認自己至少有在遊戲中作弊過一次。這樣大量的作弊會嚴重妨害到其他玩家的遊戲體驗,並影響整體產業的收入,估計超過 3000 億美元。 

如果遊戲不是你的菜,只要想像一下,你看的每一場比賽中,其中一個甚至多個玩家有很高的機率會作弊,那你還會享受這個比賽嗎?


 

可以用預防方式來分類作弊行為嗎? 

作弊類型可以被分為很多種,從簡單的練等機器人幫助玩家執行令人疲累的重複性動作,到進階的物件複製及無限的彈藥等。 

客戶端的作弊行為像是 aimbot - 可以讓玩家在射擊遊戲中自動瞄準的外掛 - 以及事先預錄好用來執行一系列動作的巨集,都是沒辦法完全防範的,因為它們都不依賴於遊戲,而是在玩家的本地電腦(客戶端)實現。這就是為什麼即使是最火紅的 3A 大作也會見到這些作弊行為,而這些遊戲還似乎有無限的資安預算呢。 

那什麼樣的作弊行為是可以靠撰寫安全性程式碼及優化遊戲設計來防範的呢?


 

3 個真實發生於多人遊戲中的作弊案例 

在 2019 年的世界駭客大賽 Defcon,一個名為 Manfred 的玩家向大家展示,騙過人氣最高的多人遊戲是多麼的簡單。為了繞過任何加密或混淆方法,他透過程式碼注入不同網路層以閱讀並撰寫程式碼給遊戲客戶。 

  1. 在熱門遊戲 UO 網路創世紀中,每個玩家可以刪除自己的房子,但顯然房子的 ID 是透過請求包發送,而且沒有伺服器驗證房子 ID 屬於發送請求的玩家。這時惡意機器人只要在房子 ID 送到伺服器前更改它,就能夠刪除其他玩家的房子了。

  2. 在另一個示範,Manfred 則展示他如何利用大型多人遊戲 - 裂痕 Rift。透過整數溢位的方式,他從銀行提領了 -1 塊錢,並獲得了大量的收益。 

  3. 還有更簡單的作弊方式,甚至不需要任何程式碼操作,玩家就可以透過修改客戶端的記憶體,在 GTA 5 獲得無限的彈藥。只要使用像是 Cheat Engine 這樣的軟體,就能輕鬆找到保存彈藥值的位址列表,接著搜尋你現在擁有的彈藥值(例如 240 顆),並發射一顆子彈,再搜尋新的彈藥值 239,就可以找到你的彈藥值位址,現在你只要編輯該位址的彈藥值就可以了。 


 

如何預防線上遊戲的作弊行為 

有兩個基本的概念可以幫助你的遊戲變的更安全 

  1. 把程式碼當成是開源的 
    雖然加密、混淆、第三方應用程式、和其他讓修改客戶端代碼變的困難的技術是良好的資安實踐,但不能過度依賴這些手段,因為它們都很容易被避開。 

  2. 永遠不要相信客戶及任何來自客戶的東西 
    從上述的案例中可以看到,詐欺者可以修改客戶端的記憶體、硬碟、網路流量、執行代碼以及其他所有來自客戶端的東西。 


 

7 個預防線上遊戲作弊行為的最佳實踐 

將上述兩個概念謹記在心,想在客戶端建立一個預防策略是沒有意義的,我們就好好關注伺服器端這邊吧。以下是在多人遊戲防止作弊的最佳實踐 

  1. 使用專用伺服器(dedicated server)為唯一有效的權限。其他多人遊戲架構像是 listen server 或 P2P,可能足以應用在開發,但不適用於生產。遊戲的決策只能在受信任且被保護的伺服器上執行。 

  2. 當在編寫網路相關的程式碼時,將客戶及伺服器的邏輯分開是很重要的。將設計來讓客戶端呼叫的伺服器功能標記起來,是預防作弊的第一步。 

  3. 不要以看見的結果來更新伺服器,而是以造成結果的動作來更新。舉例來說,與其更新玩家已獲得某物品的伺服器,不如準確更新玩家所執行的動作。這樣伺服器就會進行必要的檢查並得出必要的結論。 

  4. 避免將參數從客戶端寄送到伺服器,即使這樣的處理程序可能很麻煩。當玩家發射一顆 X 武器的子彈時,不要直接更新伺服器,而是讓伺服器重新提取武器的類型。 

  5. 驗證任何來自客戶端的東西,並忽略那些在客戶端所做的任何檢查。當玩家射擊子彈以前 - 玩家是否持有遠程武器、他們的彈匣裡有子彈嗎、玩家還活著嗎、收到的參數是經過證實且在預期的範圍值內嗎?再瑣碎的檢查也不要放過! 

  6. 在客戶端及伺服器端的呼叫強制執行最小延遲,以預防伺服器即時反應不合理的呼叫。舉例來說,這可以預防詐欺者以極快的速度清空他的彈匣。 

  7. 環境檢查 - 有些驗證沒有這麼容易執行,如果玩家試圖和遊戲中的某物件互動,你可以檢查該物件與玩家的距離,但如果這個物件被阻擋,而玩家無法實際和它互動怎麼辦呢?這一類的檢查可以透過引擎環境查詢,像是線路追蹤、碰撞檢查等,但可能會導致伺服器過載就是了。


 

總結 

在多人遊戲中,因為每一個動作都必須和伺服器同步及驗證,因此伺服器很容易就會漏掉,而詐欺者就是在等待伺服器錯失的機會。因此從遊戲一開始開發,就要常常思考被作弊的可能性以及該如何防範。 

就像剛剛所說,並不是每個作弊行為都可以透過優化程式碼來防止,但像是透過惡意機器人進行詐欺,是很常見而且可以被阻止的,若是希望透過 Imperva 的 Advanced Bot Protection 解決方案保護防範惡意機器人,歡迎諮詢蓋亞資訊。我們擁有豐富的資安經驗、國際認證技術團隊、高客製化的解決方案,以及 24*7 中英雙語線上維運服務,不但在 2020 年晉升 Imperva 台灣地區唯一的白金級合作夥伴(Platinum Partner),更於連續兩年榮獲 Imperva 總部頒發的全球傑出業務獎,為企業資安防護的最佳夥伴。馬上透過下方按紐聯絡我們,獲得免費諮詢吧!