受全球疫情影響,從2020年春節開始,小遊戲使用者開始暴增。除了微信小程式之外,快手、抖音、百度等平臺相繼上線小遊戲。
小遊戲滿足了使用者打發碎片化時間的需求,也可以對產品的社交關係進行反哺。因此,與大體積的手遊相比,小遊戲小巧玲瓏,不過多佔用手機資源,具有快速“安裝”或無需安裝的特點。其玩法簡單,通常以休閒益智類主題為主,深受使用者喜歡。當然,小遊戲不僅是指以小程式形式載入的遊戲,也包括安裝包體積很小的遊戲,例如白鷺、cocos2djs引擎編寫的遊戲。
在商業變現可觀的背景下,原創小遊戲被很多不懷好意的不法分子盯上,或被友商竊取了部分程式碼資源,或被插入一些廣告惡意連結。本文將解答小遊戲的風險藏在哪裡?如何開展針對性的治理,確保小遊戲的底層安全?
01 小遊戲暗藏風險
程式碼被篡改將引發一系列問題,最常見的情況是遊戲被盜版、廣告氾濫,甚至給玩家帶來隱私風險與經濟損失。
1.1 盜版層出不窮
客戶端研發人員對盜版行為深惡痛絕。一般情況下,不法分子透過獲取.wxapkg檔案,使用網上成熟的反編譯工具進行解包,接著修改程式碼加之“換皮”,對部分的圖片資源進行替換,輕鬆抄襲原創小遊戲。
以曾經風靡一時的“合成大西瓜”為例,如果在微信上搜尋對應的小程式,大量名稱相似的同型別小遊戲映入眼簾,大致如下:
此外,在3dmgame上進行搜尋,以cocos2d打包安裝包形式呈現的“合成大西瓜”對應版本不時出現,許多被修改為XX版:
由此可見,小遊戲存在嚴重的盜版風險。最大的風險來自於對一些“原始的遊戲”進行“二次改包”,快速打包形成新的安裝包,意圖空手套白狼,也不乏在其中加入一些惡意程式碼的行為。
總的來說,資源盜版一直以來是部分遊戲的痛點,由於小程式結構的簡單性,攻擊者可以在不修改任何程式碼的情況下,直接在解包出來的檔案中對資源進行竊取,繼而重新打包進行釋出。諸如此類的違法操作在行業中已是屢見不鮮。
1.2 廣告無所不包
我們開啟一款火爆的小遊戲,總會在幾秒內看到一個跳轉的廣告連結,大多以推廣其他遊戲為目的。
目前,一個小遊戲中往往接入了形形色色的廣告,有的是推廣廣告,有的是惡意廣告,或者是修改正版的廣告為自己的廣告。玩家並不清楚廣告的真正來源。除此之外,整個遊戲過程中,一些誘導性的廣告和分享行為相繼出現,使得使用者沒有辦法判斷此廣告的真正目的。由此看見,小遊戲防篡改迫在眉睫。
02 小遊戲安全解決方案
為了化解上述風險,易盾提供全新的小遊戲解決方案。這裡小遊戲不僅僅指的是小程式端的安全問題,也包括在不同平臺上發行的APK小遊戲包,進行全面的安全保護。
2.1 程式碼保護
盜版的出現以及惡意連結與廣告的植入,多是由於第三方獲取了客戶端程式碼邏輯,並在程式碼中修改與增加惡意內容。易盾為程式碼提供JS的保護,增加程式碼被分析的門檻,功能包括對於JS中關鍵程式碼的控制流混淆,變數名混淆,字串加密,動態反除錯,反格式化等功能,並透過不同的加固組合兼顧到效能,以下是程式碼保護前後的比較:
保護前:
保護後:
2.2 資源加密
小遊戲apk資源
我們可以對apk裡面的資源進行加密保護,包括png,.jpg,.js,.html,.json等資原始檔,防止資源被盜取。此外,我們對於白鷺和cocos2djs引擎中的資源進行加密處理,並可以透過黑白名單兼顧靈活性。
小程式資源
由於小程式結構特殊,該型別遊戲資源可以採用動態分包下發的方式增強安全性,即對於小程式中的資源進行加密,並使用自己唯一的特徵進行解密,比如appid等。另一種方式是在圖片中植入自己的水印特徵,防止有意的攻擊者進行改包。
資料保護
資料直接呈現給使用者,尤其是使用者的重要資料,保護資料是防盜的關鍵點之一。小程式可以透過隨機更新版本,來迭代更新金鑰,安全地設計金鑰所在的位置,金鑰隨機多型地更新,以增加盜版者的破解成本。這種方式讓盜版分子不能獲得正確的資料,及時動態防範。