隨著智能手機的普及,市場的泛娛樂化,手游行業發展迅猛。手機游戲在整個游戲市場已經占了一定的江山。手游用戶的增多,手游的安全性隨之受到行業的重視。目前越來越多游戲面臨各種各樣的安全風險,如靜態修改文件,動態修改游戲邏輯,篡改協議,游戲盜號,惡意發言,工作室等等,這些風險極大影響了游戲的平衡性和游戲的體驗,對游戲及用戶本身造成消極的影響。
下面將分類介紹這些各種的風險形式以及一些常用的實現方式。
1.1 靜態修改文件
游戲文件被靜態修改再重新打包簽名是很典型的一種安全風險,通過這種方式,原本可能需要購買的游戲很可能就能直接玩,甚至在里面打廣告,散播色情和惡意言論等等,損害了游戲開發方的利益;而另一方面游戲本身的一些邏輯被破壞,甚至被插入惡意代碼,導致游戲出現安全風險,也損害了用戶的利益。同時,也存在直接修改安裝后的資源文件,代碼文件,配置文件等等,直接影響游戲運行邏輯。下面將著重介紹這些手法及其實現方式。
1.1.1 修改資源
修改游戲資源的方式有很多種,但最終結果都是影響游戲邏輯。游戲如果被修改了游戲資源,那么原本游戲需要引用到的資源就會缺失,這樣可能會導致整個調用該資源處理邏輯的鏈失效,從而導致游戲出現非正常的行為。
一般來說,可以嘗試在游戲的資源目錄替換或者刪除一下資源文件,如圖片或聲音資源等,通過資源的修改,影響游戲的邏輯或者在游戲中做非法宣傳等行為。
例如,某飛機類游戲的游戲目錄里面存在img_bullet_enemy.png這么一個文件,如果嘗試把這個文件刪除掉,然后開啟游戲,會發現其出現敵機無子彈的情況,而玩家的子彈依然可以用,那么這樣就造成了一種無敵的情況,輕易通關。再者,通過非法破解并篡改游戲中的圖片、聲音或者視頻資源,在里面加入自己需要宣傳的廣告,不單影響用戶的體驗,如果是欺詐類信息還會間接導致用戶造成財產安全的損失,也影響了游戲的健康度。
1.1.2 修改代碼
修改代碼最直接的影響的是游戲邏輯,影響邏輯意味著影響游戲的平衡性,這種情況對其他的游戲玩家是不公平的,容易造成玩家的流失。
就手游來說,對于Native層存放游戲邏輯的游戲,惡意用戶修改得比較多的還是只讀數據段和代碼段,只讀數據段可能存放著一些對游戲有重要作用的數據,代碼段包含了整個游戲的執行邏輯,合理地修改這些會造成一定的外掛功能,如無敵,秒怪,技能無CD等等,在此不一一列舉。而對于一些核心代碼是在游戲運行時加載編譯的游戲來說,惡意用戶甚至只需要通過對影響邏輯的核心文件簡單地反編譯得到源碼般的邏輯后,修改并打包回去就能直接對游戲造成不良的影響。嚴重者造成非常惡劣的外掛影響游戲。
當然,做這些事情的前提是對游戲開發環境以及代碼有一定的了解,但是隨著游戲社區的普及,論壇介紹相關的游戲環境和知識的文章越來越多,惡意用戶就有更多的渠道去獲取相關的知識和基礎。
1.1.3 修改配置
修改配置文件和修改資源文件有點類似,也可以理解為配置文件其實是資源文件的一種。一般游戲的配置文件在打包發布是加密的,一些不注重安全性的游戲很容易直接把未加密的配置文件發布到外網中,這樣的話惡意用戶能夠輕易修改配置文件。如一些xml文件的修改,bin文件的替換等等。例如某些游戲的xml會保存著一些屏幕或者地圖索引等信息,直接修改里面的數據后可能會出現一些未預料到表現。
舉個例子,某跑酷類游戲修改其中的xml文件的屏幕大小配置選項會影響游戲主角速度;把原本簡單關卡配置的bin文件復制N份重命名覆蓋原來困難關卡的bin文件就形成了游戲場景簡單化的效果,獲取非法收益。諸如這樣修改游戲配置的情況有很多,這些很大程度影響了游戲的平衡性,對游戲造成了不良的影響。
1.2 動態篡改邏輯
游戲除了被靜態修改而面臨風險外,還可能在運行時被動態修改,這種情況很常見。一般來說,常規的動態篡改邏輯都會伴隨著注入和掛鉤的操作。注入的方式大體分為兩種,一種是通過注入zygote進程滲透到目標游戲進程中,另一種是直接注入到目標游戲進程中;而掛鉤操作也有不同的種類,如GOT表Hook,inline Hook等,其目的是攔截游戲邏輯。另外,在一些系統中如安卓系統存在不注入程序而達到修改程序數據的效果,雖然這種方式比較簡單,但卻是目前影響游戲安全最大的一個因素之一。
下面分修改代碼和修改數據兩類簡單介紹。
1.2.1 修改代碼
手游中游戲與惡意外掛權限的不對等就很容易出現惡意外掛在已root的手機里面對游戲為所欲為,注入程序,掛鉤代碼,直接影響游戲的運行邏輯。
比如一個游戲在主角在玩副本打怪的過程中如果打怪的傷害計算函數在本地的客戶端內,那么每一次主角打怪物就必定會調用傷害計算函數去處理怪物最終的減血量,如果這個時候一些惡意外掛程序注入到了游戲中,然后掛鉤這個傷害的處理函數,在主角對怪物造成傷害的時候攔截住了傷害處理邏輯,感知當前傷害,并對這個傷害值放大數倍就會達到秒怪的效果。
除了上面描述的外,還存在另一種修改代碼的方式,原理大同小異,就是注入后直接修改代碼,這種方式和靜態修改代碼差不多,只不過這種方式是以動態的形式修改的,對于靜態修改代碼來說只不過是在內存動刀而已。
再拿傷害處理邏輯來說,如果游戲的實時pvp對戰的傷害處理邏輯是在對方的客戶端運算的,通俗來說就是你能不能打傷我,我說了算這種情況。惡意用戶會想到直接不處理對方對自己造成傷害時的邏輯,這個時候如果邏輯模塊用的是thumb指令且函數自身無返回值且調用該函數時保存了調用現場的話則只需在處理函數的頭兩個字節寫上0x46F7即可(Arm指令的話則是0xE1A0F00E),因為這是一條返回指令。
1.2.2 修改數據
破壞游戲正常運行常見于通用修改器,如市場上出現的燒餅修改器,葫蘆俠修改器等等,其修改數據主要是修改堆棧和全局變量等。因為游戲中可能存在未加密的類成員變量或者全局變量等等,所以如果通過內存的變化去定位出某個數據的具體位置還是很容易的。
這種修改可以是注入式的修改,也可以是非注入式的修改。在IOS系統里面目前都會先注入到程序然后修改里面數據,而在android系統中則可以根據/proc//maps文件遍歷具有r標識的感興趣的模塊通過/proc//mem達到和注入式修改一樣的效果。
1.3 游戲協議
游戲協議是游戲客戶端和服務器交互的管道,是具體游戲協定的通信格式。通過協議,服務器可以知道客戶端的游戲此刻處于什么狀態,發送和請求什么數據等等。如果協議遭到分析破解,篡改和惡意重發,會給游戲甚至整個游戲服務器帶來嚴重影響。游戲協議的修改可以從兩方面來闡述,分別是篡改游戲協議和重發游戲協議,只要在網絡層或者傳輸層攔截協議即可。所以游戲廠商至少會從兩方面保護游戲協議,一個是做好協議字段的加密和哈希校驗;另一個是對每條協議都要增加序號字段防止協議重發。
1.3.1 篡改游戲協議
篡改游戲協議的影響和游戲本身的設計方式相關性很大。因為一些游戲盡管篡改了協議對游戲的影響并不惡劣,主要是因為游戲初期設計的時候就設計成不信任客戶端的數據。而一些重客戶端邏輯的游戲因為服務器極度依賴客戶端數據,服務器接收處理不得當或不經任何處理就直接轉發協議到另一個客戶端都會對游戲造成很大的影響。
這里有個真實案例,某游戲在副本結算協議里面存在一個字段,這個字段通過分析只有0和1兩種狀態,正常玩游戲結束如果失敗了,這個字段會是0;如果游戲結束時是闖關成功的,那么這個字段則是1,。那這里我們可以簡單的理解這個字段的意義為是否勝利。后面做的操作是在通關失敗時攔截協議,篡改這個字段為1,會發現是有勝利收益的。這種情況篡改游戲協議是可行的,但更多是游戲本身的設計問題。
而如果服務器對介紹的數據沒有處理好直接轉發給另一個客戶端,這樣很容易讓惡意用戶在協議中構造特殊數據令其他客戶端崩潰。比如某些游戲的pvp對戰,如果可以令對方的客戶端崩潰,那么惡意用戶就可以直接獲得勝利,賺取收益。
所以在游戲協議設計得當的基礎上,服務器不要輕信客戶端傳過來的數據才能保證游戲的安全性。
1.3.2 重發游戲協議
重發游戲協議數據往往不是因為游戲側協議內邏輯校驗不夠完善,而是由于協議內容字段不夠豐富以及協議間耦合度不高而形成的。舉一個比較易于理解的例子,某槍戰類游戲在實時pvp對戰中造成傷害時會發送傷害協議,惡意用戶通過篡改游戲的傷害值這個方式試圖改變對敵方的傷害,發現這個方法并沒有效果。
因為游戲開發側在服務器里面就設定了不信任客戶端的傷害值,所以這種修改方式沒什么作用。但是如果惡意用戶在攔截到這種傷害協議時,復制該協議幾份一并發送過去,那這個時候服務器就認為確實是造成了這么多次傷害,這樣惡意用戶就可以秒殺敵方玩家了。如果游戲側增加一些時間,子彈數,命中源和目標位置等等字段,并且每次這種傷害協議的發送前會在前后有一些附帶該協議信息的標識就不能簡單地重發協議了。
1.4 游戲盜號
盜號的情況在游戲生存周期中是無法避免的問題,因為游戲賬號是由人來托管的,游戲側只能盡量減少盜號的發生。但是可能因為手游起步較晚以及手機大部分游戲的登陸都是直接授權登陸,手游盜號的情況與端游相比較少。出現盜號的情況可能是由于玩家通用的賬號在其他地方泄露了,惡意使用者通過這個賬號登陸進手游轉移財產,這個是目前手游中盜號可能性最大的一種情景。另一方面,也因為手游中能夠進行財產轉移的游戲也是很少的,這也是游戲盜號在手游中不常見的原因之一。
而一旦手游發生盜號,游戲平臺的安全性也容易受到質疑,很可能會導致用戶流失,這也是游戲開發方需要重視的問題。
1.5 惡意發言
現在越來越多的游戲系統中存在大廳或者游戲內聊天的功能。這個時候就會出現一些惡意用戶進行惡意發言,比如散播廣告,謠言,詐騙,黃賭毒等信息,利用用戶的心理誘導正常用戶,極大影響了游戲的健康度,對用戶和游戲造成不良影響。
據不完全統計,惡意發言影響的群體大多數是剛剛入門玩游戲的用戶,這些用戶更容易受到游戲中惡意發言的吸引,比如一些低價購買鉆石的信息,如“1元購買100w鉆,聯系方式XXXX”等詐騙信息。隨著游戲的活躍量上漲,一些看起來微不足道不足以讓人相信的信息也會影響一大部分用戶的,保障這部分用戶的利益,也是游戲開發方所需要考慮的問題。
1.6 工作室
與端游一樣,手游中工作室建立的目的也是為了從游戲中賺取非法收益。一般工作室會購置大量的機器,并且通過輔助插件,外掛等工具以及多開的方式刷取高品質賬號出售;如果手游中有轉移財產的手段,也有的工作室會把眾多小號的財產批量集中轉移到某個賬號上面出售。工作室這些行為不僅非法賺取利益,而且很容易擾亂游戲的經濟系統,對游戲經濟平衡性造成了較大危害。一旦經濟系統失衡,用戶在游戲投入金錢獲得的物品就容易貶值,所以對工作室的打擊無論用戶自身還是游戲開發方也是有好處的。
1.7 小結
本文介紹了手游面臨的安全風險,每種風險的利用方式以及這些風險產生的危害,旨在讓讀者了解手游當前手游面臨的安全問題及其嚴重性,并倡導大家共同維系健康的游戲環境。
原文鏈接:https://gslab.qq.com/portal.php?mod=view&aid=95
編輯:jq
-
智能手機
+關注
關注
66文章
18615瀏覽量
183448 -
iOS
+關注
關注
8文章
3399瀏覽量
152737 -
手游
+關注
關注
0文章
14瀏覽量
2960
發布評論請先 登錄
AI安全風險監測:構筑智能時代的“數字免疫系統”

Qualys TotalAI 降低 Gen AI 和 LLM 工作負載的風險

評論