Unity - Apk包的代碼與資源提取
https://www.cnblogs.com/programmer-kaima/p/5847429.html
最近在研究如何給Unity遊戲進行加密,讓別人不能輕易破解你的apk包,不過網上的加密方法都是有對應的破解方法~_~!!結果加密方法沒找到好的,逆向工程倒會了不少。今天就來講解如何提取一個沒做任何保護的apk包中的資源和代碼。
(1)打開apk包
首先,將你的apk包重命名為zip或者rar類型的文件,然後進行解壓縮,如下:
重命名為,然後進行解壓縮,得到如下的目錄內容:
各個部分的說明如下表:
assets | Unity遊戲裏面的資源和代碼 |
lib | arm和x86需要的so文件 |
META-INF | 信息包 |
res | 存放icon等資源 |
AndroidManifest.xml | 清單文件 |
classes.dex | Android Dalvik字節碼 |
resources.arsc | 編譯後的二進制資源文件 |
我們主要關註的是assets目錄,裏面有我們想要的資源和代碼。
(2)提取代碼
Unity把我們大部分的代碼都放到了這個dll文件中(當然還有其他代碼放到了first-pass之類的代碼,但不是主要的),我們可以在assets\bin\Data\Managed這個路徑下找到所有需要的dll文件。要解析dll文件,我用到了這個軟件(自行百度下載),用該軟件打開
通過點擊右鍵進行導出,選好導出目錄,等待一會,就能得到以下的源代碼:
我的測試項目就只寫了一個Test.cs,可以看見上面已經成功導出了,打開一看:
我滴乖乖,完全和我寫的一模一樣,一點不變地導出來了。(由此可見代碼混淆和加密的重要性了)
(3)提取資源
要提取資源,我們需要用到Unity Studio,可在下載地址他的Github上下載。
打開Unity Studio,點File/Load folder,選中assets\bin\Data該目錄,然後就能得到如下界面:
其中Scene Hierarchy可以查看遊戲裏面場景的分布情況,而Asset List可以查看資源。
比如我的測試工程裏面,只在空場景裏放了一個汽車模型,可以從這個文件分析出我的場景結構如下:
而打開Asset List,可以找到我放進去的一張藍色按鈕貼圖:
當然,除了貼圖,像音頻文件、xml文件、著色器等都能查看到,不過模型目測不能提取出來(這就要用disunity了)
總結:unity遊戲太容易被分析出來了,如果項目十分重要,那代碼混淆、加密等工作還是十分重要的。
Unity - Apk包的代碼與資源提取