最近在研究如何给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游戏太容易被分析出来了,若是项目十分重要,那代码混淆、加密等工做仍是十分重要的。