Unity3D程序脚本反编译分析与加密

白癜风症状 http://m.39.net/pf/a_4800901.html

“企业数据财富的保护者”

SenseShield

帮助

对于使用Unity3D开发的程序,存在被反编译的风险,也面临着被dump内存的威胁,最终引起游戏或工程被抄袭甚至盗版。下面简单介绍对Unity3D脚本分析过程,同时提供了对其保护的参考手段。

工具集

dnSpy、Ollydbg、CheatEngine

背景

大家都知道Unity3D使用开源monoC#语法,所有代码都不是编译到EXE,而是位于{APP}\build\game_Data\Managed\Assembly-CSharp.dll(对于最新的Unity3D不是这样),而且mono语法只是跟C#兼容,但是原理完全不一样,传统的C#加壳全部失效,因为Assembly-CSharp.dll不是标准的DLL加载过程,既不是PE的DLL,也不是dotNet的DLL加载,而是由mono.dll读取Assembly-CSharp.dll的C#脚本解释执行。这一切不用等官方IL2CPP和自己定制mono引擎!

反编译

反编译Unity3D的脚本代码,使用dnSpy就可以达到很好的效果,dnSpy可以准确的将Unity3D的脚本文件以及标准的DotNet动态库文件反编译成源码形式。一般,将需要被反编译的文件拖入dnSpy工具即可。效果如下,其中可以完整的看到编码者的代码逻辑:

截图官方demo被反编译

根据反编译后的代码就可以进一步分析软件的流程走向,甚至篡改原有过程,具体不做描述。

如何对脚本代码进行保护?

对于这种脚本代码的保护,通常采用脚本文件加密,解释器解密的形式来实现加密方案,下面简单介绍下可以针对这种脚本进行保护的现成产品:VirboxProtector、VirboxAHS。

VirboxProtector、VirboxAHS分别可以防止静态分析、动态调试Unity3D的软件产品,具有如下特性:

1.一键加密你的代码逻辑,无法反编译,无法dump内存。

2.不降低游戏帧数,甚至某些情况下还能提高游戏帧数。

3.Assembly.DLLL代码按需解密,只有调用到才会在内存解密,不调用不解密,黑客无法一次解出所有的代码。

4.完整授权方案,支持云授权软锁授权,USB加密锁授权网络锁授权,支持限制时间限制次数限制网络并发。

5.自带反黑引擎,驱动级别反调试,对世面大部分调试器有效。

(注意:如果需要最高安全强度的游戏反外挂,请参考反黑引擎




转载请注明:http://www.aierlanlan.com/rzfs/1087.html

  • 上一篇文章:
  •   
  • 下一篇文章: