1. 程式人生 > >Unity - Apk包的代碼與資源提取

Unity - Apk包的代碼與資源提取

ron 來講 如果 情況 取代 asset con list blog

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包的代碼與資源提取