知物由學 | iOS AssetBundle資源保護

網易易盾發表於2020-12-18

在遊戲的製作過程中,開發者都會考慮一個非常重要的問題,即如何在遊戲執行過程中對資源進行動態下載和載入。為此,Unity使用了AssetBundle這一技術來滿足開發者的需求。那麼,什麼是AssetBundle呢?

AssetBundle是Unity中的一種資源包,這種資源包可以是Unity遊戲內要用到的幾乎所有資源,例如:模型、貼圖、紋理、預設、場景、指令碼等。它是資源的一種集合,可以理解為資源的一種壓縮包。開發者,透過AssetBundle的方式將遊戲中所需要的各類資源打包壓縮並上傳到網路伺服器上,當遊戲執行時再從伺服器下載該資源,從而實現資源的動態載入與執行。基於它的壓縮(預設)、動態載入等特徵,很容易解決以下問題:

(1)實現資源的熱更

(2)減少包體大小,方便遊戲做分包處理

一、AssetBundle資源安全性

對於遊戲開發者來說,遊戲內的資源是重要的資產,保護遊戲資源變得越來越重要。原始的AB檔案,可以透過工具(比如:AssetStudicGUI)直接檢視遊戲中的資源,如下:

知物由學 | iOS AssetBundle資源保護

這樣的話,遊戲資源就容易被盜取,造成不可預估的損失。更重要的是,未加密的AB資源同樣會被遊戲外掛作者利用,給遊戲帶來致命性的打擊,影響遊戲的平衡。例如:

修改圖片資源可以達到透視的目的

修改遊戲指令碼可以打出更高的傷害

指令碼暴露,遭遇外掛開發者的破解,影響遊戲數值平衡等

資源暴露,存在劇透、竟品分析風險

由此可見,AB資源讓我們在獲得便利的同時,也帶來了一系列的安全問題,這使得針對AB資源的保護顯得越來越重要。

二、AssetBundle資源保護方案

儘管AB資源的保護迫在眉睫,但是市面上的依然缺乏完美的加密方案。iOS閉源的特性,也使得iOS的AB資源保護方案難以入手,使開發難度直線上升。相比Android,iOS APP獲取到的許可權更低,在非越獄環境下能使用的方案十分有限。使用整體加密方案,解密效能低,影響遊戲的啟動速度、畫面流暢感。面對開發環境和黑灰產的雙重壓力下,網易易盾全新一代的AB資源加密方案也應運而生。

方案整體邏輯如下:

知物由學 | iOS AssetBundle資源保護

Unity 不同的版本提供了不同的介面以供呼叫,在實現上也有些許差異。而且不同的開發者也有不同的使用習慣,所以需要開發通用方案來相容各種情形。透過對底層的函式進行操作,以達到通用的目的,從而實現AB資源的動態載入和解密。

我們的資源加密方案有以下特點:

知物由學 | iOS AssetBundle資源保護

三、AssetBundle資源保護效果

AssetStudicGUI可以直接檢視AssetBundle檔案,透過它可以輕易獲取任何指令碼、圖片等資源資訊。如下:

知物由學 | iOS AssetBundle資源保護

但是,對AB檔案加密後,我們再次開啟,可以發現不僅加密了資原始檔,還對目錄進行了隱藏。這樣就能更加有效的防止資源被竊取,最大限度的保護AB檔案不被破解。

我們直接以一個圖片檔案為例,在AB檔案中標誌為:CAB-1b46b1b14dfb14fbe428b0ff40abfaca

加密前的二進位制資料如下:

知物由學 | iOS AssetBundle資源保護

加密後如下:

知物由學 | iOS AssetBundle資源保護

透過二進位制對比,可以看到圖片裡的資料已經加密:

知物由學 | iOS AssetBundle資源保護

四、總結

AB資源讓開發者獲得了極大的便利,但其本身存在的安全問題,也使得對AB資源的保護變得越來越重要。網易易盾AB資源加密經過長久的技術沉澱,已經能夠有效的應對AB資源破解,在保證安全的前提下,幾乎不影響遊戲本身的啟動時間以及執行效率。同時,Android和iOS做到極致相容,同一套加密後的AB資源,可以同時熱更給Android和iOS兩個平臺。

網易易盾透過多年技術深耕,在安全加固、手遊反外掛、安全檢測、備指紋、安全元件等方面已經具有相當的優勢。為了給我們的客戶提供最高質量的服務,我們也將持續完善各項保護功能,為開發者保駕護航。


相關文章