Unity数据加密丨(二)dll文件加密

本节目标,加密dll文件,供Unity使用。

加密思路:

  • dll文件因为要给Unity使用,因此不能加密/混淆 public变量/方法。如果混淆了public变量/方法,Unity就不能识别到了。
  • 因此我们只混淆私有变量/方法,达到加密目的。
  • 若部分私有的变量/方法也不想被混淆,那就声明成protected,这样也不会被混淆。

 

 

一、加密软件的安装

我们采用 Dotfuscator Professional Edition 4.96 软件进行加密。

下载地址:传送门

 

1、安装

 

2、创建新项目

创建后,按下Ctrl+S键,将该项目保存到你的文件夹内。

这样就将经常需要混淆dll的配置保存成Dotfuscator的工程,其实就是一个xml文件,然后每次打开就不用设置了。

Unity数据加密丨(二)dll文件加密_第1张图片

 

3、显示界面

你的界面可能是左侧这样,看不到右侧的这一栏。

你只需要向下拖动这个软件的高度即可显示出来。

Unity数据加密丨(二)dll文件加密_第2张图片  Unity数据加密丨(二)dll文件加密_第3张图片

 

4、设置属性

Settings-->Project Properties:

添加如下两条属性,解决混淆.Net Framework 4.0以上版本时报错。

ILASM_v4.0.30319
C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe

ILDASM_v4.0.30319

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\ildasm.exe

我这边用的VS2019,若你用的VS2017,则第二条属性的值,应改成:
C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\ildasm.exe

Unity数据加密丨(二)dll文件加密_第4张图片

 

再添加下方两条属性,解决混淆.Net Framework 3.5版本时报错。


 
   
   
   
   
  1. //报错信息
  2. Could not find a compatible version of ildasm to run on assembly F:\WorkFile\VS\SARF\SARF\bin\Debug\SARF.dll.
  3. This assembly was originally built with .NET Framework v2 .0 .50727.
  4. Build Error.

ILDASM_v2.0

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\ildasm.exe

ILASM_v2.0

C:\Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe

 

 

二、dll文件的加密

1、软件加密设置

Settings:

  • DisableStringEncryption设为NO
  • DisableControlflow、DsiableRenaming也为NO,即保证控制流和混淆功能打开。(该项默认为No)

Unity数据加密丨(二)dll文件加密_第5张图片

 

Rename:

  • 勾选“Use Enhanced Overload Induction”(使用增强模式)
  • “RenamingScheme”选择“Unprintable”(不可打印字符,即乱码)

Unity数据加密丨(二)dll文件加密_第6张图片

 

2、开始加密

 1、添加要加密的dll文件

选择Input,添加你要加密的dll文件

提示:加号里面应勾选库(默认已勾选),这样会只会混淆私有函数、私有变量。否则连公有函数变量也会被混淆,造成Unity无法识别。

Unity数据加密丨(二)dll文件加密_第7张图片

 

2、取消不想加密的内容

Exclude是排除的意思。勾选下方选项,即意味着排除它,不对它进行加密。

Unity数据加密丨(二)dll文件加密_第8张图片

 

3、 开始加密

点击绿色的三角号,开始加密!

 

看看输出的日志,找到dll文件,再次导入Unity,尝试下吧!

 

 

三、测试

1、我们首先测试,加密后的dll,导入Unity是可用的。

2、我们再来看看,用反编译软件破解未加密的dll文件,和加密的dll文件,破解出的内容是怎样的。

反编译未加密dll文件:

Unity数据加密丨(二)dll文件加密_第9张图片 未加密,反编译后代码一览无余

 

反编译加密后的dll文件:

Unity数据加密丨(二)dll文件加密_第10张图片 加密后,私有变量/函数名已被保护起来

你可能感兴趣的:(unity中的api,unity)