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游戲太容易被分析出來了,如果項目十分重要,那代碼混淆、加密等工作還是十分重要的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM