引子
我发现网上有些人做的Unity游戏很不错,想要一份源码来研究,于是去找到了一些游戏的APK,我用dnSpy软件将apk反编译了一下,拿到了Unity游戏的源码(包括资源和代码)
资源准备
dnSpy
Unity APK
准备一个你想要反编译的Apk
下载dnSpy
打开dnSpy的GitHub下载地址,如下图所示
如下图所示:这是下载后的dnSpy文件夹
反编译Unity Apk
1. 准备一个Unity Apk
如下图所示:
2. 修改文件格式
将Apk文件的后缀名 .apk 改为 .rar 或者 .zip格式,如下图所示:
3. 解压文件
如下图所示,这是解压后的文件夹结构目录
4. 文件夹作用分析
assets | Unity项目里面的资源文件和代码文件 |
lib | arm和x86所需要的so文件 |
META-INF | 信息包 |
res | 存放资源图片例如Icon等 |
AndroidMainifest.xml | 清单文件 |
classes.dex | Android Dalvik字节码 |
resources.arsc | 编译后的二进制资源文件 |
这篇文章小编主要关注的是assets文件目录,里面有我想要的资源和代码
5. 查看源码
如下图进行操作,如果打开后找不到Assembly-CSharp.dll,有可能这个Unity Apk是以IL2CPP方式构建出来的,并非Mono方式
如下图进行操作
反编译Apk效果图
总结
unity游戏太容易被分析出来了,如果项目十分重要,那代码混淆、加密等工作还是十分重要的
当然,除了贴图,像音频文件、xml文件、着色器等都能查看到,不过模型目测不能提取出来(这就要用disunity了)