Unity3D 现在很火。应用得场景很多。那么针对 unity 发布的程序如何加密呢?
Unity3D 程序的安全问题
代码安全问题
Unity3D 程序的核心程序集文件 Assembly-CSharp.dll 是标准的 .NET 文件格式,附带了方法名、类名、类型定义等丰富的元数据信息,使用 DnSpy 等工具可以轻易地将其反编译和篡改,代码逻辑、类名和方法名等一览无余。代码逻辑一但被反编译,很容易滋生各种类型的外挂,破坏游戏平衡,如果代码逻辑中存在漏洞,也容易被挖掘和利用,可能对开发商造成无法预料的损失。
资源安全问题
Unity3D 程序在编译打包阶段会通过 Unity 编辑器将资源打包成 Asset Bundle 文件,Asset Bundle 是一种公开的压缩类文件格式,使用 Asset Studio 等工具可以对其解析、展示和提取。如果不保护,很容易被窃取进行二次开发。对于网络游戏,还可以将一些场景资源的材质属性改为透明,实现透视效果。
需求一:安卓 U3D-APK 的加密保护
两种编译方式:ill2cpp 和 mono。不同的编译方式,加密方式也不同。将 Android Unity3D apk 解压,查看 lib 库目录,若是 lib 目录下含有 libmono.so 库,那么说明 Unity3D 编译选项时选择的是 mono,此时需要对 apk 整个目录进行加壳。
若是 lib 目录下含有 libil2cpp.so 库,那么说明 Unity3D 编译选项时选择的是 IL2CPP,此时需要对 lib 目录下的 so 库进行保护。
加密工具
Virbox Protector 1.6 版本。试用下载:https://shell.virbox.com/apply.html
加密例子:angrybots5.5.3.apk(编译选项:mono)
加密过程
-
将 angrybots5.5.3.apk 导入 VirboxProtector
-
设置加密选项和资源加密
-
开始保护
加壳成功后会生成 ssp.apk,然后重新对加壳后的 ssp.apk 进行签名打包,才能正常安装。
加密效果
代码加密效果
加密前代码反编译效果
加密后代码反编译效果
资源加密效果对比
需求二:控制设备程序的授权使用
解决方案1:精锐 5 加密锁
方案简介
精锐 5 加密锁是一款 USB 加密锁,安卓设备上必须能支持插 USB 设备,精锐 5 可以控制软件的使用时间、次数、功能模块等。拔掉加密锁,设备则无法运行 U3D 的程序。
解决问题
-
防止随意拷贝软件
-
限制软件使用时间
-
限制软件使用次数
如何使用
精锐 5 加密锁可配合 Virbox Protector 一起使用,一方面做代码及资源加密,同时做软件的授权管控。同时精锐 5 加密锁也提供了 SDK,可快速实现写锁的授权,不需要做代码开发。全程使用工具操作加密及写锁。只需要到深思数盾商城购买一套开发套件即可开始测试。
解决方案2:Smart License
方案简介
Smart License 支持安卓及 ARM 平台下的程序授权控制,使用形式为授权码(16 位字母和数字),可快速实现一码一机和一码多机方案。同时可快速实现软件的限时及功能模块的限制使用。
功能特点
- 绑定硬件,防止拷贝
经过授权的设备会生成本地缓存文件,和设备硬件绑定,有效防止通过拷贝文件的方式盗用授权
- 授权智能化
联通授权激活、使用情况、设备信息的壁垒,综合汇总为开发者提供详实的经营数据,辅助开发者执行营销策略,改善产品
- 授权自动化
授权的自动激活及自动恢复减少开发者的管理工作,降低产品推广过程中的支持工作量,提升产品的体验。
- 可视化数据展板
可视化数据展现让开发者掌控授权使用情况
- 支持广泛,应用灵活
支持硬件产品包括(不限于)华为海思、大华、海康萤石等智能摄像头;支持联网或不联网的设备上使用
如何使用
Smart License 提供免费试用,首先需要注册一个 Virbox LM 开发者账号(https://developer.lm.virbox.com/),注册后登录 VirboxLM 即可进行授权码的生成和管理。可联系深思数盾定制 SDK,做加密及授权的开发。
最新评论