最近在研究如何给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包的代码与资源提取的更多相关文章

  1. Unity3d项目入门之打Apk包

    ②结合Android Studio编译器打安卓包 在安卓官网下载AS,按照步骤正常安装编译器完毕,运行AS,点击右下图的图标打开SDK Manager, 选择下载安装相关的“SDK Platform” ...

  2. Flutter 发布APK时进行代码/资源混淆的坑

    Flutter 发布APK时进行代码/资源混淆的坑 @author ixenos 1. 关键点 proguard是Java的代码混淆工具,但是当用第三方库的时候,必须要告诉proguard不要检查,因 ...

  3. UNITY 打APK是如何确定哪些资源有用哪些无用的

    一切从build settings开始,它即是 构建列表,构建运行包当然从它开始. 1,只有在构建列表中的场景和场景引用资源才会被打进包里,其它资源除了2,3位置都不会被打包 2,streamming ...

  4. airtest前期准备(pocoSDK+unity打apk包+安装pocoui库)

    只介绍unity的环境准备,cocos的可以参考官方文档    https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integrat ...

  5. Android基础新手教程——1.10 反编译APK获代替码&资源

    Android基础新手教程--1.10 反编译APK获代替码&资源 标签(空格分隔): Android基础新手教程 本节引言: "反编译Apk".看上去好像好像非常高端的样 ...

  6. Unity手游之路<十一>资源打包Assetbundle

    http://blog.csdn.net/janeky/article/details/17652021 在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制 ...

  7. UE4 减少APK包的大小

    本文依据官方文档 Reducing APK Package Size整理而来,不过我会陆续添加自己减少包大小的心得. ETC1 纹理 当使用ETC1打Android包时,注意ETC1是不会压缩带Alp ...

  8. Android Studio删除工程里面无用的代码和资源

    如果你是一个经常开发android应用程序或者做android维护项目的人,我想说你对我谈论的这个话题,一定会感兴趣的. 因为只有做到了这两点,你的项目生成的apk包才会更小,而不是随着你的开发和维护 ...

  9. 使用混淆ProGuard压缩代码和资源/减少方法数量

    ProGuard介绍 ProGuard是一个Java类文件压缩器,优化器,混淆器和预先文件验证器. 压缩步骤检测和删除未使用的类,字段,方法和属性. 优化步骤分析和优化方法的字节码. 混淆步骤使用短无 ...

随机推荐

  1. Eclipse 一些小知识

    快速查找未完成事项 eg: // TODO 通过模板格式化代码 Window --> Preferences --> Java --> Editor  --> Template ...

  2. 解决CURL 请求本地超时

    首先,这样的问题只会出现在Windows+Nginx中. php-cgi 默认使用的是9000端口,即使多个进程也并发的是9000端口 在用户访问一个php页面的时候nginx已将该进程占用,在该进程 ...

  3. CTSC是啥

    洛谷看到一题的难度NOI/NOI+/CTSC 百度一下 CTSC (China Team Selection Competition)为国际信息学奥林匹克竞赛(International Olympi ...

  4. webpack初试

    前言: 知道这完儿,没用过.关于webpack有很多介绍了,就不多说了.放几个链接,方便新手理解.这是给纯没用过的人了解的.这里只是简单介绍一下webpack的基本用法.大多内容都是来自webpack ...

  5. ubuntu14 备份

    备份命令 # tar cvpjf backup.tar.bz2 –exclude=/proc –exclude=/lost+found –exclude=/backup.tar.bz2 –exclud ...

  6. PHP开发笔记:二维数组根据某一项来进行排序

    比如说我们现在有一个二维数组: $arr = array( ‘d' => array(‘id' => 5, ‘name' => 1, ‘age' => 7), ‘b' => ...

  7. ionic build Android错误记录未解决

    1.try itcordova -v cordova create testing cd testing cordova plugin add cordova-plugin-sim cordova p ...

  8. BZOJ 3144 [Hnoi2013]切糕 ——网络流

    [题目分析] 网络流好题! 从割的方面来考虑问题往往会得到简化. 当割掉i,j,k时,必定附近的要割在k-D到k+D上. 所以只需要建两条inf的边来强制,如果割不掉强制范围内的时候,原来的边一定会换 ...

  9. Simulink Memory vs Unit Delay

    Memoryブロック.Unit Delayブロック共に前回の入力値を出力しますが.動作するタイミングが異なります. ●Memoryブロック シミュレーションの各時刻(ステップ)で動作し.「1ステップ」 ...

  10. oracle EXP导出一张表时使用query参数指定where条件

    oracle exp 导出一个表的部分内容,使用query参数可加上SQL的where条件进行过滤 注意:如果需要使用到日期字符串格式等单引号,需要使用双引号将where条件括起来,而且双引号要用\做 ...