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