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库,那么说明Unity3D编译选项时选择的是IL2CPP,此时需要对lib目录下的so库进行保护。
加密工具
Virbox Protector 1.6版本。试用下载:https://shell.virbox.com/apply.html
加密例子:angrybots5.5.3.apk(编译选项:mono)
加密过程
1.将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,做加密及授权的开发。