洪流學(xué)堂,讓你快人幾步。你好,我是你的技術(shù)探路者鄭洪智,你可以叫我大智。
接下來的幾天呢,大智作為探路者帶你一塊探索一下Unity2020.1里面有什么好玩的東西。
首先是你日常使用的和編輯器相關(guān)的更新。主要包含以下幾個方面:
看到UI Toolkit不要覺得陌生,其實它就是原來的UI Elements改了個名字而已哦。
在2020之前,UI Elements只能在Editor里面用,作為Editor擴展的UI。2020.1里面,UI Toolkit推出了runtime的預(yù)覽版,也就是意味著可以在游戲里面試用了。
想嘗鮮的話可以在Package Manager里面安裝,后面大智也會幫你探探路。
在Unity2020之后,啟用預(yù)覽包移到了菜單欄Edit > Project Settings > Package Manager中的Enable Preview Packages。如下圖:
之前咱們編輯Prefab時需要進入獨立的Prefab Mode來編輯,2020.1中,你就可以直接在Scene窗口中對Prefab進行編輯了。編輯Prefab時Scene窗口還可以選擇3種顯示方式:
Asset Store沒辦法在編輯器中直接訪問了,2020后只能從網(wǎng)頁中訪問Asset Store了。
Asset Store中購買的插件需要到Package manager中下載安裝:
2020.1中作為Preview包發(fā)布。
Build Report Inspector安裝后,可以查看最后一次打包的詳細信息,包括腳本、資產(chǎn)、輸出的文件、stripping的詳情和各場景使用的資產(chǎn)。
2020中可以同時打開多個GameObject/組件的獨立Inspector了,方便屬性的對比。
GameObject的
組件的
對于耗時比較長的任務(wù)(比如網(wǎng)絡(luò)請求、上傳文件到服務(wù)器等),可以通過異步任務(wù)在后臺運行,注意這是編輯器擴展的API,僅能在編輯器中使用。
之前有些任務(wù)會顯示進度條,而有些任務(wù)在后臺運行,不顯示進度條,但是編輯器會卡住,咱們就會很困惑?,F(xiàn)在所有的任務(wù)都有進度條了,并且會顯示后臺在做什么。
當模型朝向有問題時,可以直接在模型的Importer Inspector中進行設(shè)置轉(zhuǎn)換,不會修改模型的Rotation。
Accelerator是個什么東西呢?
Unity Accelerator是一個獨立的服務(wù)程序,可以部署在局域網(wǎng)中(一般部署在局域網(wǎng)中一臺服務(wù)器上),一個是可以提高Unity編輯器資源導(dǎo)入/切換平臺的效率, 另外一個是可以減少Collaborate云服務(wù)下載源碼的時間。
2020中的更新是增加Web管理面板,而不需要到服務(wù)器上通過命令行操作了。
每當Unity檢測到本地項目中的資源有變化時,它會自動將資源轉(zhuǎn)變?yōu)閁nity的可讀文件,這個過程稱為資源管線導(dǎo)入過程。檢測到的改動越多,則導(dǎo)入時間也會呈指數(shù)式增長。
Accelerator工作原理Unity Accelerator可以緩存已轉(zhuǎn)換的資源,以此增強新的資源導(dǎo)入管線。只要局域網(wǎng)中有一個人執(zhí)行了導(dǎo)入操作,其結(jié)果就能自動緩存到Unity Accelerator中。之后另一個團隊成員想導(dǎo)入相同版本的資源時,Accelerator便會在電腦開始導(dǎo)入前先檢查本地緩存。
Collaborate是Unity提供的一個版本控制的收費服務(wù),但是由于國內(nèi)網(wǎng)絡(luò)原因,使用該服務(wù)的團隊較少,在這就不過多介紹了。版本控制還是老老實實使用通用的Git吧。
Accelerator體驗下載地址(需要Unity2019.3及以上版本):OSX:https://unity-accelerator-prd.storage.googleapis.com/unity-accelerator-osx-installer.dmg
Windows:https://unity-accelerator-prd.storage.googleapis.com/unity-accelerator-windows-installer.exe
Linux:https://unity-accelerator-prd.storage.googleapis.com/unity-accelerator-linux-installer.run
1、可以只應(yīng)用部分數(shù)值到實例上2、Preset Manager可以通過路徑進行篩選
從2020.1開始,項目模板不在包含在Unity安裝包了,第一次使用的時候才會下載。離線狀態(tài)下只能使用最基礎(chǔ)的2D/3D模板。
呼~ 沒講清楚的地方歡迎評論,咱們一起探索。
我是大智,你的技術(shù)探路者,下次見!
別走!點贊,收藏哦!
好,你可以走了。
3月25日,2018 Unity技術(shù)路演首站:移動游戲技術(shù)分享日在廣州舉辦。此次活動,旨在為移動游戲開發(fā)者們搭建一個更好的交流平臺,學(xué)習(xí)Unity在移動游戲開發(fā)領(lǐng)域的最新工具與應(yīng)用技巧,分享最炫酷的游戲開發(fā)與行業(yè)應(yīng)用案例,了解移動游戲開發(fā)中的安全問題所能給企業(yè)帶來的隱患,幫助開發(fā)者提前感知安全隱患,避免受到損失。
網(wǎng)易云易盾移動游戲安全技術(shù)專家陳士留
網(wǎng)易云易盾移動游戲安全技術(shù)專家陳士留出席交流活動,并進行了《Unity手游風(fēng)險及安全問題——網(wǎng)易云易盾來保駕護航》的技術(shù)演講。在分享中,他介紹了時下Unity手游面臨的眾多風(fēng)險及熱門外掛,并重點講解了易盾安全解決方案的技術(shù)原理和實踐案例。
一、Unity手游面臨的風(fēng)險
據(jù)統(tǒng)計,2017年國內(nèi)活躍移動游戲APP應(yīng)用約有9000款,其多數(shù)存在被破解、惡意代碼插入、廣告插入、外掛、二次打包等安全問題。而這些安全問題為企業(yè)帶來隱患是,研發(fā)難度增加,研發(fā)成本的提高、玩家付費意愿減低、游戲失去公平性,玩家流失,直接損失收入——因此,破除Unity手游風(fēng)險對于開發(fā)者來說十分重要。
常見的Unity手游風(fēng)險主要包括破解風(fēng)險、外掛工具這兩類。
破解風(fēng)險
破解風(fēng)險主要有Unity mono腳本解密、Unity il2cpp腳本解析、Assetbundle資源篡改這三項。
Unity mono腳本解密
以下兩張圖為mono腳本文件的二進制形式及源碼轉(zhuǎn)換。
Unity il2cpp腳本解析
以libil2cpp.so和global-metadata.dat作為輸入,使用Il2CppDumper即可進行解析:
解析出來的效果如下所示,類名、函數(shù)名以及對應(yīng)的偏移都能夠被解析出來:
目前iOS中還沒有能夠解析為源碼的工具,但是如果可以解密或解析Android腳本,將會大大方便iOS的破解。因此Android的有效腳本加密非常有必要。
Assetbundle資源篡改
透視功能可讓使用修改版的玩家獲取不對稱優(yōu)勢。如下所示的某槍擊游戲,將其中Assetbundle資源里面的材質(zhì)屬性修改為透明,即可達到透視的效果。
除了資源被篡改的風(fēng)險外,游戲中還存在資源被競品盜取、分析的風(fēng)險。
存檔數(shù)據(jù)被修改
某些游戲存檔數(shù)據(jù)以明文形式存在,如果這些數(shù)據(jù)不去服務(wù)端校驗,或者是單機游戲的話,則存在巨大的安全風(fēng)險,游戲的各種屬性可以直接修改。
外掛工具
游戲修改器
使用修改器能夠?qū)Ρ堵蕪?8%改成999.9%,使得攻擊傷害提升了幾十倍。類似的原理也可以實現(xiàn)無敵、秒殺、無限藍、技能無CD等效果,因此修改器對游戲平衡的危害相當大。
常用的修改器有燒餅修改器、八門神器和GameGuardian(GG修改器及其各種修改版),其中的GG修改器(GameGuardian)流行于即時對戰(zhàn)類游戲(比如吃雞游戲)。
上圖為搜索數(shù)值界面,下圖為調(diào)用lua腳本界面
某QQ群售賣的GG lua腳本
免ROOT修改器
免ROOT修改器是指通過第三方軟件獲得Root權(quán)限,可以訪問和修改手機游戲中幾乎所有的文件,但這樣操作有可能影響游戲的穩(wěn)定性,出現(xiàn)死機、卡頓、重啟等人為性故障。
八門神器附帶的免ROOT修改器
GG大玩家附帶的免ROOT修改器
游戲加速器
加速器分2種類型,一種是手機加速器,例如燒餅加速器、GG加速器;另一種是模擬器加速器,例如天天加速器。加速器除了可以加速,還可以減速。如下圖所示,使用燒餅加速器,背景速度會隨加速倍數(shù)加大而提高。
游戲破解版
破解版提供了很多變態(tài)的功能來吸引玩家。下圖是某個站專門破解游戲售賣進行盈利,他們除了有售賣網(wǎng)站,還開了淘寶店。只要月付150元,就已經(jīng)超過很多游戲的ARPU值了。這樣破解版的存在會嚴重影響普通玩家體驗,給游戲收入和口碑都造成很大的損失。
包括GG大玩家、光環(huán)助手等等,市面上都有各種破解版售賣。
GG大玩家游戲破解版,上圖為修改版列表,下圖為修改版功能
光環(huán)助手游戲破解版,上圖為修改版列表,下圖為修改版功能
模擬按鍵掛
上圖就是一個模擬按鍵掛,雖然只是模擬點擊,但是可以做到自動游戲,可以刷各種金幣、積分,對游戲平衡也會有比較大的影響。常見的模擬按鍵掛包括有觸動精靈、觸摸精靈、按鍵精靈、叉叉助手、游戲蜂窩等等。
二、易盾是怎么做的?
網(wǎng)易易盾能夠提供Unity mono DLL腳本加密、IL2CPP 加密、Assetbundle加密等加密解決方案,以及反修改器、反加速、反模擬器、反調(diào)試等手游通用保護功能和手游風(fēng)險感知。
Unity mono DLL腳本加密
通過修改或者HOOK mono_image_open_from_data_with_name能夠?qū)LL腳本加解密。mono_image_open_from_data_with_name是CSharp 腳本的加載函數(shù),如果CSharpDLL腳本做了加密,需要在這個函數(shù)執(zhí)行之前解密。因此只要在這個函數(shù)這里下斷點或者HOOK,就可以解密出原始DLL,而不需要逆向加密算法。需要注意的是,這里有個memcpy拷貝操作,mono會把解密后的DLL在內(nèi)存中留存一份拷貝。
Unity mono DLL腳本加密經(jīng)歷了三代的技術(shù)演進。
第一代加密直接對DLL文件進行加密,在mono_image_open_from_data_with_name函數(shù)開始處解密。對于這個的破解方法很簡單,PE結(jié)構(gòu)的文件,以4d 5a90 00這四個字節(jié)為magic head,這可以做為CSharp DLL腳本的特征,只要搜索0x905a4d這個數(shù)值就可以了,由于燒餅修改器是使用10進制數(shù)值,將其轉(zhuǎn)換成10進制值:9460301。因此解密門檻很低,只要使用修改器就可以解密。
第二代加密基于第一代加密的明顯弱點,針對解密加強了防護。解密后,把下圖所示的PE頭抹掉,使得修改器無法定位到腳本位置。因此解密門檻比較高,需要非常強的逆向開發(fā)能力才能破解。
第三代加密針對Csharp 函數(shù)做了加密,也就是方法級加密,需動態(tài)解密。
原始未加密dnspy函數(shù)解析結(jié)果
函數(shù)加密后dnspy函數(shù)解析報錯
IL2CPP 加密
Il2cpp腳本信息以lib2cpp.so形式存在,結(jié)合global-metadata.dat文件內(nèi)的符號信息,即可進行解析,因此需要對libil2cpp.so做so加殼,如下圖所示,原始libil2cpp.so用IDA可以看到475個導(dǎo)出函數(shù):
加固后的libil2cpp.so導(dǎo)出函數(shù)則為空:
Assetbundle加密
Assetbundle未加密時,Unity Studio可解析出各種資源:
對Assetbundle加密后,Unity Studio就無法解析了:
手游通用保護功能
除去Unity mono DLL腳本加密、IL2CPP 加密、Assetbundle加密等加密解決方案外,網(wǎng)易易盾也能夠提供通用的手游保護功能,包括反修改器、反加速、反模擬器、反調(diào)試、反模擬點擊、文件校驗、防二次打包、存檔加密、引擎SO定制化加殼等。一般而言,這些通用功能任何游戲引擎都支持,可以根據(jù)游戲需求選擇一個或多個。目前,網(wǎng)易易盾支持的游戲主要包含Unity3d、COCOS、NEOX和UE4。
反修改器
修改器可以實現(xiàn)很多功能,如無限藍、技能無CD、無敵、秒殺、倍攻等,是工具黨的最愛,也是專業(yè)破解者常用的工具之一。常見的修改器除了常見的燒餅、八門神器、葫蘆俠、GG(GameGuardian)以外,還有很多定制修改版。
其中,GG修改器是做的最專業(yè)的修改器,專門做了反檢測措施(隨機化包名、子進程使用系統(tǒng)進程名等),因此常規(guī)的進程檢測對GG無效。但是易盾手游保護采用修改行為檢測,可以通殺所有修改器,包括所有已知和未知的修改器。下圖是檢測效果示例:
反加速
加速器可加速可減速,主要分為兩類:一是Android系統(tǒng)內(nèi)的加速器,如燒餅加速器、叉叉加速器,一般修改器都附帶加速功能;二是對模擬器進程加速的加速器,此加速原理跟端游加速相同,實質(zhì)是對整個模擬器做了加速,Android系統(tǒng)內(nèi)并沒有加速器在運行,比較典型的是天天模擬器附帶的天天加速器。
加速器的使用會讓個別玩家獲得游戲優(yōu)勢,影響游戲平衡。但是易盾手游保護對以上這2種加速都有檢測方案,而且是針對行為的檢測方案,不針對特定的某些加速器,通用性更好——對于天天加速器這樣的進程加速器,即使只加速0.1倍也可以檢測到。
上圖是一個加固過的跑酷游戲,用天天加速器加速生效后,過了一秒鐘左右,即會閃退。
反模擬點擊
模擬點擊嚴格上來說不屬于非法外掛,處于灰色地帶,因此模擬點擊器都是公司化動作,應(yīng)用很廣泛,但是模擬點擊腳本提供的功能對游戲平衡也會帶來很大的不良影響。目前比較知名的模擬點擊器,有叉叉助手、觸動精靈、觸摸精靈、按鍵精靈、游戲蜂窩等。
如下圖所示,觸動精靈啟動后,再啟動游戲,保護檢測到模擬點擊器的存在即會閃退:
但是易盾手游保護使用了進程+行為檢測相結(jié)合的方式,能夠?qū)δM點擊器進行檢測。
以上介紹的這些手游通用保護功能各有其特點,開發(fā)者可以按實際需求進行選擇:
功能 | 特點 |
反調(diào)試 | 檢測方式隱蔽,大大提高動態(tài)逆向分析難度 |
反模擬器 | 可以通殺所有已知和未知模擬器 |
文件校驗 | 兼顧了效率和安全性 |
防二次打包 | 使用了更為底層的方式,可以繞過各種過校驗插件 |
存檔加密 | 透明方式接入,不需要開發(fā)做額外接入工作 |
手游風(fēng)險感知
網(wǎng)易易盾還能夠提供手游風(fēng)險感知功能,主要包括包含破解包的檢測、跟破解者無感知對抗、惡意用戶風(fēng)險評估以及支持私有化部署。
三、易盾保護方案特點
網(wǎng)易易盾保護方案具有純Native保護、對引擎SO做加殼、兼容性和穩(wěn)定性高、性能影響小、支持Windows、Linux、Mac三平臺加固等性能特點。
純Native保護
游戲dex內(nèi)部都是第三方SDK以及游戲內(nèi)部不涉及到游戲邏輯的SDK。如果對DEX加殼的話,一方面容易造成Android碎片化,導(dǎo)致dex加殼會降低app的兼容性;另外Android存在Dalvik和Art兩種虛擬機,所以dex加殼會為了兼容2種虛擬機而增加處理成本,從而導(dǎo)致啟動耗時增加比較厲害。阿里和騰訊都有DEX加殼服務(wù),但是支付寶、微信都沒做DEX加殼。支付寶和微信的安全問題應(yīng)該是所有APP中間最嚴重的,他們都沒做DEX加殼,這很能說明問題,此外所有騰訊的游戲都沒有做DEX加殼。所以如果手游保護需要依賴于DEX加殼的話,兼容性和安全性都是很難保證的。因此建議游戲不要使用DEX加殼。
下圖是以一個第三方游戲為例,使用jeb分析其dex包含的模塊:
網(wǎng)易易盾可以提供純Native保護,使游戲保護不依賴DEX加殼。DEX加殼和純Native保護優(yōu)缺點比較如下:
影響項 | DEX加殼 | 純Native保護 |
兼容性 | Android的碎片化對dex影響很大 | Android的碎片化對natvie層沒有影響 |
啟動時間 | 啟動的時候需要對數(shù)兆的DEX進行讀文件、解密、ota優(yōu)化,啟動時間影響很大 | C代碼的內(nèi)存操作,啟動時間影響很微小 |
運行速度 | 成倍影響運行效率 | 對運行幾乎無影響 |
渠道過審 | 加殼后影響渠道植入SDK | 不影響渠道打包 |
安全性 | 對游戲無保護作用,很多游戲破解版都帶著dex殼 | 完全針對手游量身定制的保護,到各種游戲威脅都有防護 |
對引擎SO做加殼
基本上所有的破解都依賴于對引擎so的逆向分析,如果對so進行了加殼保護,會大大增加游戲被破解的門檻。除了對引擎SO加殼,網(wǎng)易易盾還會對敏感函數(shù)代碼做校驗。
兼容性和穩(wěn)定性高
兼容強的原理在于所有保護都在SO層,不會對DEX進行修改,有效避免了Android碎片化導(dǎo)致的兼容問題。網(wǎng)易易盾的兼容性極高,可以兼容從Android 2.3到Android 9.0所有版本系統(tǒng)、所有模擬器以及所有游戲引擎使用的指令集。
手游保護的穩(wěn)定性,需要遵循如下發(fā)布流程:
QA測試:在200臺手機上以及各種模擬器上測試;
預(yù)線上測試:將安全模塊集成到日活1000的APP上線測試2周;
版本發(fā)布:前面2輪都測試穩(wěn)定后,正式發(fā)布;
線上回歸:先在內(nèi)部比較小的游戲上線測試,確保穩(wěn)定性。
性能影響小
易盾保護方案還具有性能影響小的特點,無論是CPU占用、內(nèi)存占用、啟動時間、電量消耗等方面的影響幾乎都可忽略不計。
性能指標 | 影響大小 |
CPU占用 | 增加0.5%-1% |
內(nèi)存占用 | 增加1M-3M |
啟動時間 | 增加30ms-150ms |
電量消耗 | 增加0.5%-1% |
安裝包體積 | 增加1.5M-3M |
流量消耗 | 無影響 |
GPU占用 | 無影響 |
支持Windows、Linux、Mac三平臺加固
此外,易盾保護方案還支持Windows、Linux、Mac三平臺加固,加固工具以jar包形式提供,不僅自帶極速簽名功能,而且對加固做了全面優(yōu)化,速度更快。
加固接入的對接過程包括:
確定游戲加固項;
易盾技術(shù)支持云端配置好加固項;
獲取appkey;
下載加固jar包工具,根據(jù)使用說明配置好appkey。
四、易盾的解決方案獲得了哪些客戶認可?
網(wǎng)易易盾保護方案廣泛應(yīng)用于實際案例中,包括網(wǎng)易公司內(nèi)部的倩女幽魂、終結(jié)者2:審判日等手游之中。
在外部,也有游戲公司多個游戲皆采用了易盾手游保護方案。
最后:易盾還在現(xiàn)場舉辦了安全診斷環(huán)節(jié),現(xiàn)場有用戶問及加固的流程。網(wǎng)易客戶全工程師李沛然表示,加固流程上,一條命令行即可接入,不會影響開發(fā)流程。
“使用很便捷?!崩钆嫒粡娬{(diào)。