当前位置: 首页 > news >正文

Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)

Unity3D 导出的apk进行混淆加固、保护与优化原理(防止反编译)

目录

前言:

准备资料:

正文:

1:打包一个带有签名的apk

2:对包进行反编译

3:使用ipaguard来对程序进行加固


前言:

对于辛辛苦苦完成的apk程序被人轻易的反编译了,那就得不偿失了,这篇文章就是解决Unity打包出来的包进行代码加固和混淆。

准备资料:

1:Obfuscator.zip  作用是代码混淆,是Unity的一个插件

2:Apkdb.rar    作用是反编译apk,做过修改之后回编译成修改好的apk

3:Reflector_8.5.0.179_XiaZaiBa.zip 作用是反编译代码,方便查看代码

4:IPAguard.exe 作用是对包进行重新签名和对apk的加固

以上文件下载地址:IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具

正文:

1:打包一个带有签名的apk

在打包Player Settings设置里面,需要对签名重新设置,签名可以理解成为一个证书,可以设置密码信息,保证一部分的程序安全,据说在Unity5.0对程序的安全有了初步保障,有一个默认的签名。但是个人习惯还是使用自己的签名为好,如下图:

 

以上都设置好之后,Alias下拉框选项就会多出一个选项,此时就是需要创建的签名了

 

点击 Create a new key之后,如图,填写所需要的信息,就可以创建了新的签名了,新的签名一定要保存好,这个东西对于程序加固还有作用。如图所示

 

我是保存到桌面上了

然后正常发布自己的包就可以了

2:对包进行反编译

接下来就要用到上面介绍的各种工具了,首先使用的是Apkdb反编译工具,首先解压出来,这是一个安装包,解压之后,需要进行对其安装,最好是关闭杀毒软件,安装界面是一个dos界面,

选择1 简体中文就可以了,输入1   然后回车继续安装

安装过程中,会提示你需要安装Java,当然,对于已经打包出包来说,这些肯定已经配置了,如果还没有配置,则需要配置Java环境了,当然,还有Android的SDK的配置,这个请自行搜索,网上很多教程,这里就不多说了,如图所示:

 

按任意键继续  就开始安装程序了,等待安装完毕后,会有一个选项,这里选择1或2都可以,我选择1

然后会让你选择安装器,这个选择哪个都行,我选择N

然后需要你重启电脑,因为要配置鼠标右键的功能

 

重启后,右键自己发布出来的apk,你会发现多了一些东西,这些东西都是有用的

点击APKDB编译,就准备开始对apk进行反编译

 

这里选择1  于是就开始反编译了,编译完成后,就在同级目录下生成一个文件夹,这就是反编译出来的文件

 

然后就开始对代码的混淆了

3:使用ipaguard来对程序进行加固

代码加固是进一步保护应用的一种方式,通常通过特定平台来对应用进行加固处理。

这边以ipaguard为例,目前还在免费阶段,想薅羊毛的快快试试。

Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密。可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护。 可以根据设置对函数名、变量名、类名等关键代码进行重命名和混淆处理,降低代码的可读性,增加ipa破解反编译难度。可以对图片,资源,配置等进行修改名称,修改md5。只要是ipa都可以,不限制OC,Swift,Flutter,React Native,H5类app。

所以就要使用到混淆器,混淆器是把里面的代码变量等信息进行重命名,这样可读性会变得非常差,接着,

到这里,我们完成了对代码的混淆,但是还没有进行加固,防止反编译,所以,请往下看

然后导入自己的包就可以了,这里是流水式的走下来,所以只需要导入和导出就可以了,

添加单个文件,选择好刚刚混淆后的包,然后你做的事情就是等,等待上传完--加固完--下载完--已完成,当到已完成的时候,说明这里已经可以导出了,导出需要前面提到的自己创建的签名,这里可是会用到的,如果不用,则包安装包可能会出现问题

选择导出签名包,选择签名文件,输入密码,然后点击开始导出

 

导出的包是经过混淆,经过加固比较安全的包了

相关文章:

  • Java版 招投标系统简介 招投标系统源码 java招投标系统 招投标系统功能设计
  • idea创建不了spring2.X版本,无法使用JDK8,最低支持JDK17 , 如何用idea创建spring2.X版本,使用JDK8解决方案
  • Java多线程并行读取多个文件(二)
  • 嘴尚绝卤味:健康卤味,未来餐饮市场的新星
  • exceljs读取el-upload上传的excle数据并转为json输出
  • 设计模式总览
  • 英伟达狂卖50万台GPU!AI爆火背后,是显卡的争夺
  • DeDeCMS v5.7 SP2 正式版 前台任意用户密码修改(漏洞复现)
  • pytorch 代码块积累
  • pycharm 创建vue并实现简易路由功能
  • LabVIEWL实现鸟巢等大型结构健康监测
  • Java零基础-switch条件语句
  • 算法设计与实现--贪心篇
  • 笔记-基于CH579M模块通过网线直连电脑进行数据收发(无需网络)
  • 什么是Daily Scrum?
  • Apache的基本使用
  • CSS3 变换
  • Lsb图片隐写
  • MobX
  • Protobuf3语言指南
  • Python 基础起步 (十) 什么叫函数?
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • tab.js分享及浏览器兼容性问题汇总
  • unity如何实现一个固定宽度的orthagraphic相机
  • vue-loader 源码解析系列之 selector
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 聊聊flink的TableFactory
  • 消息队列系列二(IOT中消息队列的应用)
  • 以太坊客户端Geth命令参数详解
  • 大数据全解:定义、价值及挑战
  • ​力扣解法汇总946-验证栈序列
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (五)网络优化与超参数选择--九五小庞
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)Windows2003安全设置/维护
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net反编译的九款神器
  • .NET面试题(二)
  • .NET下的多线程编程—1-线程机制概述
  • .net中的Queue和Stack
  • .Net转前端开发-启航篇,如何定制博客园主题
  • @RequestParam,@RequestBody和@PathVariable 区别
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [Latex学习笔记]数学公式基本命令
  • [LeetCode] 2.两数相加
  • [Loadrunner参数化]一个文件输两列参数的取值
  • [NKCTF 2024]web解析
  • [Poj 1015] Jury Compromise 解题报告 (完全背包)