Unity3D 导出的apk进行混淆和加固防止反编译
前言:
对于辛辛苦苦完成的apk程序被人轻易的反编译了,那就得不偿失了,这篇文章就是解决Unity打包出来的apk进行代码加固和混淆。
准备资料:
1:Obfuscator.zip 作用是代码混淆,是Unity的一个插件
2:Apkdb.rar 作用是反编译apk,做过修改之后回编译成修改好的apk
3:Reflector_8.5.0.179_XiaZaiBa.zip 作用是反编译代码,方便查看代码
4:梆梆助手.exe 作用是对apk进行重新签名和对apk的加固
以上文件下载地址:
链接: http://pan.baidu.com/s/1CujX8 密码: jm3m
如果链接无效,请联系我QQ:503115254
正文:
1:打包一个带有签名的apk
在打包Player Settings设置里面,需要对签名重新设置,签名可以理解成为一个证书,可以设置密码信息,保证一部分的程序安全,据说在Unity5.0对程序的安全有了初步保障,有一个默认的签名。但是个人习惯还是使用自己的签名为好,如下图:
![]()
以上都设置好之后,Alias下拉框选项就会多出一个选项,此时就是需要创建的签名了
![]()
点击 Create a new key之后,如图,填写所需要的信息,就可以创建了新的签名了,新的签名一定要保存好,这个东西对于程序加固还有作用。如图所示
![]()
我是保存到桌面上了
然后正常发布自己的apk就可以了
2:对apk进行反编译
接下来就要用到上面介绍的各种工具了,首先使用的是Apkdb反编译工具,首先解压出来,这是一个安装包,解压之后,需要进行对其安装,最好是关闭杀毒软件,安装界面是一个dos界面,
![]()
选择1 简体中文就可以了,输入1 然后回车继续安装
安装过程中,会提示你需要安装Java,当然,对于已经打包出apk来说,这些肯定已经配置了,如果还没有配置,则需要配置Java环境了,当然,还有Android的SDK的配置,这个请自行搜索,网上很多教程,这里就不多说了,如图所示:
![]()
按任意键继续 就开始安装程序了,等待安装完毕后,会有一个选项,这里选择1或2都可以,我选择1
然后会让你选择安装器,这个选择哪个都行,我选择N
然后需要你重启电脑,因为要配置鼠标右键的功能
重启后,右键自己发布出来的apk,你会发现多了一些东西,这些东西都是有用的
点击APKDB编译,就准备开始对apk进行反编译
这里选择1 于是就开始反编译了,编译完成后,就在同级目录下生成一个文件夹,这就是反编译出来的文件
然后就开始对代码的混淆了
3:对程序的代码混淆
这次使用的是Unity的插件Obfuscator for Unity,解压后是一个unitypackage包,导入进去之后,你会发现工具栏多出了两个工具,如图所示
这里主要使用的是Tools里面的Obfuscator 选项,我们写的代码是在\assets\bin\Data\Managed文件夹下,当然,你看到的是dll文件,没错,我们的代码就是被编译成了dll文件,也就是Assembly-CSharp.dll,此时,你可以用Reflector进行反编译dll来获取里面的代码(我分享出来的是绿色版本的Reflector,所以不需要安装就可以使用),如图所示
所以就要使用到混淆器,混淆器是把里面的代码变量等信息进行重命名,这样可读性会变得非常差,接着,回到Unity中,点击Tools下的Obfuscator 选项,会弹出一个选择文件夹的提示框,这个提示框就是我们刚刚提到的dll文件夹,也就是解压后的文件夹,选择这个Managed文件夹就可以了,它会自动进行代码混淆,
混淆完成后推出dos命令,此时的dll就被混淆了,利用我们的Reflector看下代码
全都是替换成了这类信息,相信你会头大的,没事,电脑能认识就行。然后就是对已经修改好的apk回编译成可以用的apk
4:回编译成可用的apk
对于已经进行代码混淆的文件来说,原先是apk进行反编译得到的文件,所以还需要回编译回去,右键反编译出来的文件夹,
同样选择使用APKDB编译,此时出现的画面略有不同,
这里选择1就可以了,等待回编译完成后,自动输出一个新的apk,在输出之前,会有一个选项
选择Y就是了,新的apk目录是在原先目录下重新创建了一个名为“已编译*”文件夹,打开后就是回编译的文件了。
到这里,我们完成了对代码的混淆,但是还没有进行加固,防止反编译,所以,请往下看
5:使用梆梆助手来对apk进行加固
如果还没有账号的需要申请账户,下载梆梆助手才可以使用,
然后导入自己的apk就可以了,这里是流水式的走下来,所以只需要导入和导出就可以了,
添加单个apk文件,选择好刚刚混淆后的apk,然后你做的事情就是等,等待上传完--加固完--下载完--已完成,当到已完成的时候,说明这里已经可以导出了,导出需要前面提到的自己创建的签名,这里可是会用到的,如果不用,则apk安装包可能会出现问题
选择导出签名apk,选择签名文件,输入密码,然后点击开始导出
导出的apk是经过混淆,经过加固比较安全的apk了
9月19号更新:
其实这样也算不是很安全,同时你也可以对代码进行加壳,网上一搜一大堆的加壳的工具,程序的安全没有绝对的。
好了,到这里结束了,如果有什么问题,请咨询我的QQ:503115254
Unity3D 导出的apk进行混淆和加固防止反编译的更多相关文章
- (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译
Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...
- Atitit.反编译apk android源码以及防止反编译apk
Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...
- 代码混淆防止APP被反编译指南
本文来自网易云社区 安卓App安全包含很多内容,包括混淆代码.整体Dex加固.拆分 Dex 加固.虚拟机加固等方面.事实上,这些内容也是国内近几年Android App安全保护的一种主要趋势. 混淆代 ...
- android 加固防止反编译-重新打包
http://blog.csdn.net/u010921385/article/details/52505094 1.需要加密的Apk(源Apk) 2.壳程序Apk(负责解密Apk工作) 3.加密工具 ...
- eclipse导出签名apk的混淆设置
1.设置project.properties文件: 2.设置proguard-project.txt文件:
- Android: apk反编译 及 AS代码混淆防反编译
一.工具下载: 1.apktool(资源文件获取,如提取出图片文件和布局文件) 反编译apk:apktool d file.apk –o path 回编译apk:apktool b path –o f ...
- Android Apk的反编译与代码混淆
一.反编译 1.获取工具: 既然是反编译,肯定要用到一些相关的工具,工具可以到这里下载,里面包含三个文件夹,用于反编译,查看反编译之后的代码: 其实这两工具都是google官方出的,也可在google ...
- uniapp解决测评有组件导出风险,解决APP反编译,回编译后app无法打开的问题
1.APP反编译 使用hbx云打包,打包出apk 拿到apk后,先下载反编译工具 https://pan.baidu.com/s/1A5D8x_pdSELlHYl-Wl6Xnw 提取码 6vzd 使用 ...
- apk 反编译
http://blog.csdn.net/vipzjyno1/article/details/21039349/ [置顶] Android APK反编译就这么简单 详解(附图) 标签: android ...
随机推荐
- oracle与sqlserver区别
sqlserver只能在windows平台上运行,与windows兼容性较高 oracle可能在windows和linux上运行 sqlserver的安全性不是很高 oracle安全性能获得了最高级别 ...
- android fragment addToBackStack bug
In FragmentActivity.First, I add two fragment by FragmentTransaction. See the flowing code : /****** ...
- 机器学习( Machine Learning)的定义
关于机器学习有两个相关的定义: 1)给计算机赋予没有固定编程的学习能力的研究领域. 2)一种计算机的程序,能从一些任务(T)和性能的度量(P),经验(E)中进行学习.在学习中,任务T的性能P能够随着P ...
- 项目在JDK1.8环境下的一个Bug
今天发现一个已有的项目在JDK1.8环境下运行时,会报错: The type java.util.Map$Entry cannot be resolved. It is indirectly refr ...
- HTML5 智能表单
HTML5 智能表单 1.表单新增属性 ☀ autofocus 属性 <input type="text" autofocus/>设置 autofocus 属性,使文 ...
- 一键强制修改任意Mysql数据库的密码,修改任意环境Mysql数据库。
本文采用我软件里面的内置改密功能,可以一键强制修改Mysql数据库的密码, 在修改过程中,会强制干掉Mysql主程序,修改完成后重新启动Mysql就可以了. 首先讲解如何一键强制修改PHPWAMP自身 ...
- unity 内置的CG结构解析
一.Cg顶点程序必须在结构中传递顶点数据.几种常用的顶点结构定义在文件UnityCG.cginc中.在大部分情况下仅仅使用它们就够了.结构如下: 1.appdata_base: 包含顶点位置,法线和一 ...
- 如何使用jQuery动态的在body里添加script标签?
var script = document.createElement('script'); script.type = 'text/jacascript'; script.src = 'url'; ...
- Mac os 下使用gem命令的坑
在安装sass的时候,发现无论如何都装不上. 于是各种搜索资料.终于在网上找到了原因.在这里附上地址,感谢作者. https://argcv.com/articles/4429.c 为了加深理解同时防 ...
- 实现自己的JDBC框架
使用JDBC操作数据库时,dao层的增删改查有很多重复的代码,比如下面的 public int getTotal() { Connection conn = null;//通用代码 PreparedS ...