Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。通过unity 3D开发的游戏有很多为大家所熟知,手游比如王者荣耀、炉石传说、神庙逃亡;网页游戏例如新仙剑、QQ乐团等。

游戏软件开发商面临的挑战和问题

➤ 发行的游戏被盗版,核心算法和游戏资源被盗用。

【客户案例】Unity 3D保护方案

上海雄**电子有限公司

开发语言:C++ 、C#

游戏引擎:Unity 3D-2017, Unreal Engine 4

产品形态:软件+游戏机硬件

客户需求:对软件安全性要求极高,主要是对软件源码进行保护,防止游戏被破解、内存被修改,以及游戏资源被窃取。

加密方案

主程序保护:Unity 3D 使用 Virbox Protector对Assembly-CSharp.dll 进行加壳保护,Unreal Engine 4 的游戏对主程序 exe 加壳,并且关键函数使用了虚拟化和碎片代码执行。

环境保护:启用反黑引擎,实时保护软件运行环境,防止内存被修改,进行 Hook 检测等。

资源保护:使用 DSProtector 对游戏软件的多个资源文件进行加密,例如 Resources 目录下和其它 Unity 3D 或者是 *.PAK 资源文件等。

最终效果

使用 DnSpy 工具对保护过的文件进行反编译尝试,DnSpy 无法反编译出源代码和资源原文件。使用 IDA PRO 无法反汇编源代码,游戏运行不掉帧,经过保护的游戏软件,自 2016 年 3 月精锐 5 上线至今,没有发现破解案例。

碎片代码执行:基于 LLVM 和 ARM 虚拟机技术,自动抽取海量代码移入内核态模块,极大的降低了使用门槛,不再需要手动移植算法,效果上类似于将软件打散执行,让破解者无从下手。

如何保证安全强度?

➤ Virbox Protector

Virbox Protector 是深思数盾自主研发的高强度外壳加密工具,集碎片代码执行(自动化代码移植)、代码混淆、外壳加密、数据加密于一身,无需编程就能达到极高的安全强度。

针对游戏软件的特性,Virbox Protector 为 Unity 3D、Unreal Engine 4 进行了专门优化。

防护效果:

①有效防止 exe、dll 等文件被反编译或反汇编;

②利用代码混淆和虚拟化技术对软件关键函数进行保护,延缓黑客通过人肉还原代码逻辑的进度;

③碎片代码执行将关键代码剥离至安全内核中运行,使得黑客无法还原出代码逻辑。

➤ AHS(反黑引擎)

内置 R0 级核心态反黑引擎,是一种基于黑客行为特征的反制手段,可以精准的打击调试、注入、内存修改等行为,使得软件安全由被动防守转变为主动防护。

反黑引擎(AHS)特点和功能:

● 高级进程防护

● 基于黑名单特征库的进程模块查杀

● 内存防护

● 可疑进程模块上传,特征库持续更新

➤ 全盘加密(即将上线)

基于 True Crypt 技术,完整的加密整个磁盘扇区,密钥存放在精锐 5 的内部。没有精锐 5 无法启动系统,也无法使用外挂硬盘的方式读取数据,硬盘与精锐 5 的通讯已做安全处理,黑客无法监听拦截。

➤ 操作系统裁剪服务(即将上线)

删除没有必要的 Windows 模块,绕开 Windows 桌面直接进入游戏,并且去除多余的甚至危害系统安全的模块。整个系统裁剪后仅有 1G 甚至几百 M,完美兼容 4/8G的 SSD。

Unity3D保护交流QQ群:群号730803578

Unity3D加密保护案例分享(一)的更多相关文章

  1. Unity3D加密保护解决方案

    精锐5加密锁支持Unity3D代码及资源保护,并提供授权方案 产品简介 可使用Virbox Protector加壳工具对Unity3D代码进行加密.Unity3D使用开源mono C#语法,代码会编译 ...

  2. Unity3D 代码加密保护工具

    加密方式   对于Unity3D的保护方式,主要是通过Virbox Protector Standalone对Unity3D程序的整个生成目录进行加密,可以保护Unity的主要代码逻辑不被反编译,最大 ...

  3. mysql的"双1设置"-数据安全的关键参数(案例分享)

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  4. MySQL数据库详解之"双1设置"的数据安全的关键参数案例分享

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  5. Unity3D加密流程文档

    一键搞定源代码.资源等保护 代码被反编译破解,无可奈何? Unity3D 开发的软件程序,无论使用虚拟化,还是混淆,都无法抵抗住黑客丧心病狂的破解,轻松被反编译,令开发商无比头疼. 图片等资源保护被盗 ...

  6. ArcGIS Add-in插件开发从0到1及实际案例分享

    同学做毕设,要求我帮着写个ArcGIS插件,实现功能为:遍历所有图斑,提取相邻图斑的公共边长及其他属性(包括相邻图斑的ID),链接到属性表中.搞定后在这里做个记录.本文分两大部分: ArcGIS插件开 ...

  7. .Net加密保护工具分析介绍

    本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨. remotesoft protector.maxtocode..Net Reactor.Cliprotector.themid ...

  8. Office 2010 KMS激活原理和案例分享

    Office 2010 KMS激活原理和案例分享     为了减低部署盗版(可能包含恶意软件.病毒和其他安全风险)的可能性,Office 2010面向企业客户推出了新的批量激活方式:KMS和MAK.这 ...

  9. .NET 产品版权保护方案 (.NET源码加密保护) (转载)

    说 明:你希望自己用.net辛辛苦苦做出来的软件被人轻易破解吗?你希望自己花了大量人力物力用.net开发出来的产品被竞争对手轻易获取核心代码吗?这是 一篇比较详尽地介绍如何保护自己的.net源代码的文 ...

随机推荐

  1. 浅谈JavaScript对象数组根据某属性sort升降序排序

    1.自定义一个比较器,其参数为待排序的属性. 2.将带参数的比较器传入sort(). var data = [ {name: "Bruce", age: 23, id: 16, s ...

  2. [APUE]进程关系(下)

    一.控制终端 对话期和进程组有一些其他特性: 一个对话期可以有一个单独的控制终端.通常是我们在其上登录的终端设备或伪终端设备. 建立与控制终端连接的对话期首进程,被称之为控制进程 一个对话期中的几个进 ...

  3. nuxt项目中vue报错The client-side rendered virtual ...

    报错: 翻译过来是: [Vue警告]:客户端呈现的虚拟DOM树与服务器呈现的内容不匹配.这可能是由不正确的HTML标记引起的,例如在其中嵌套块级元素或丢失.Bailing水化和执行完整的客户端渲染. ...

  4. 使用SpringContextHolder获取bean实例

    public static IConstantFactory me(){ return SpringContextHolder.getBean(beanName:"constantFacto ...

  5. mysql第二次安装失败的解决方法

    1首先在控制面板中将名字与mysql有关的逐一的卸载. 2 然后找到mysql安装目录将mysql文件夹全部删掉,即使是空的文件夹也要删掉. 3打开C:\ProgramData,找到MySQL文件夹, ...

  6. 使用 PREPARE 的几个注意点

    简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名.在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变 ...

  7. db2 tablespaces table bufferpools reorgs

    通过快照查看表空间 表 缓冲池信息 db2 get snapshot for tablespaces on teps > tablespace.infodb2 get snapshot for ...

  8. 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事

    导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了<数字金融时代的云原生架构转型路径>和<从传统服务化走向Service Mesh>等演讲,就此机会,高可用架 ...

  9. {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析

    MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...

  10. [No000010E]Git7/9-标签管理

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照 ...