最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity資源管理系列1.1 Unity項(xiàng)目開發(fā)中如何做資源加密

2022-07-12 20:22 作者:博毅創(chuàng)為  | 我要投稿

Unity的游戲很容易被人反編譯出來,然后再重新打包發(fā)布,把自己辛辛苦苦開發(fā)的游戲,抄寫的一絲不掛。很多項(xiàng)目要求要做好資源加密,Unity中如何做好資源加密呢?本文給大家分享加密算法+資源打包整合思路:


(1) 游戲資源加密如何選擇加密算法;

(2) Assetsbundle資源包的加密與解密;

游戲資源包如何選擇加密算法

游戲資源包加密的第一件事情就是選一個什么樣的加密/解密算法,比較不容易被人破解。我們?nèi)绾蝸磉x擇呢?很遺憾的告訴大家,沒有任何一個保險(xiǎn)的加密解密算法是安全的。杠精第一時(shí)間就會來反駁,這怎么可能,我加密了他怎么破解?游戲資源加密注定了加密算法不能用太耗時(shí)的加密算法。接下來我們來看下不同加密算法是如何被破解的。

(1) 使用標(biāo)準(zhǔn)庫實(shí)現(xiàn)的加密解密算法,比如使用encrypt加密/解密算法。這里有個問題,我們會有一個密鑰用來解密,密鑰一般游戲都寫死到代碼里。這種破解太簡單了,密鑰寫死在代碼里,基本都是字符串等,靜態(tài)分析代碼找到密鑰對應(yīng)的字符串,有了密鑰,你用的是標(biāo)準(zhǔn)庫,一下加密資源就破解了,分分鐘你的資源就被破解了。

(2) 使用自己實(shí)現(xiàn)的加密解密算法,比如,采用二進(jìn)制亦或來做加密解密,比如,加密定一個二進(jìn)制掩碼mask, 讓每個字節(jié)都異或這個mask,得到一個新的數(shù)據(jù),這樣資源就不能被直接識別出來,使用資源得時(shí)候,再把加密數(shù)據(jù)異或一次mask在解密回來到項(xiàng)目中使用。這種破解稍微蠻煩寫,需要自己反編譯你的解密代碼,同時(shí)還要找到你的解密密鑰key。但是本質(zhì)也比較容易破解。

加密/解密算法示意如下:

源數(shù)據(jù)1110 0001, 密鑰為 00101000;

加密數(shù)據(jù): 1110 0001 ^ 00101000 = 1100 1001

解密數(shù)據(jù): 1100 1001 ^ 00101000 = 1110 0001

所有從上面分析來看想要不被破解,幾乎是很難,就看破解的代價(jià)。你這個游戲是否值得。一般我們的目標(biāo)就是不要讓人通過Unity反編譯工具就能直接讓我們的游戲直接反編譯出Unity項(xiàng)目工程,然后重新編譯打包發(fā)布就可以了。解密算法要快,注定他不會太復(fù)雜,密鑰單一的放客戶端或是網(wǎng)絡(luò),注定能獲取到。

Assetsbundle資源包的加密與解密

分析完加密解密算法以后,接下來我們就來看下如何加密我們的資源,先來介紹第一種方案,打資源包的時(shí)候,加密單個的資源, 把加密后的數(shù)據(jù)打入到資源包。解密的時(shí)候,從ab包中讀取資源,然后再把資源包里的內(nèi)容解密開來。具體做法如下:

(1) 新建一個類,繼承自FileStream, 重寫Read/Write函數(shù)。代碼如下:

(2) 修改ab包打包工具腳本,再對生成的ab包資源加密一次,打包加密腳本如下:

(3) 解密的時(shí)候,讀取ab包,使用函數(shù)AssetsBundle.LoadFromStream來加載,而這個會觸發(fā)Stream在Read讀數(shù)據(jù)接口調(diào)用,就可以進(jìn)入我們重載的Read接口,來做解密。代碼如下:

今天的分享就到這里了,關(guān)注我們,可以學(xué)習(xí)更過Unity進(jìn)階的一些教程。


Unity資源管理系列1.1 Unity項(xiàng)目開發(fā)中如何做資源加密的評論 (共 條)

分享到微博請遵守國家法律
渭南市| 屯留县| 元朗区| 青州市| 云阳县| 宝清县| 金乡县| 林周县| 错那县| 宜州市| 理塘县| 安义县| 漳州市| 珲春市| 吉林省| 崇阳县| 长葛市| 商城县| 连江县| 凤阳县| 安泽县| 裕民县| 靖江市| 历史| 岚皋县| 东山县| 缙云县| 始兴县| 嵊泗县| 琼中| 宣城市| 晋州市| 攀枝花市| 陵川县| 田阳县| 常州市| 定边县| 慈利县| 河东区| 肇庆市| 三江|