本节目标,加密dll文件,供Unity使用。
加密思路:
- dll文件因为要给Unity使用,因此不能加密/混淆 public变量/方法。如果混淆了public变量/方法,Unity就不能识别到了。
- 因此我们只混淆私有变量/方法,达到加密目的。
- 若部分私有的变量/方法也不想被混淆,那就声明成protected,这样也不会被混淆。
一、加密软件的安装
我们采用 Dotfuscator Professional Edition 4.96 软件进行加密。
下载地址:传送门
1、安装
2、创建新项目
创建后,按下Ctrl+S键,将该项目保存到你的文件夹内。
这样就将经常需要混淆dll的配置保存成Dotfuscator的工程,其实就是一个xml文件,然后每次打开就不用设置了。
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
再添加下方两条属性,解决混淆.Net Framework 3.5版本时报错。
-
//报错信息
-
Could
not find a compatible version of ildasm to run
on assembly F:\WorkFile\VS\SARF\SARF\bin\Debug\SARF.dll.
-
This assembly was originally built
with .NET Framework v2
.0
.50727.
-
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)
Rename:
- 勾选“Use Enhanced Overload Induction”(使用增强模式)
- “RenamingScheme”选择“Unprintable”(不可打印字符,即乱码)
2、开始加密
1、添加要加密的dll文件
选择Input,添加你要加密的dll文件
提示:加号里面应勾选库(默认已勾选),这样会只会混淆私有函数、私有变量。否则连公有函数变量也会被混淆,造成Unity无法识别。
2、取消不想加密的内容
Exclude是排除的意思。勾选下方选项,即意味着排除它,不对它进行加密。
3、 开始加密
点击绿色的三角号,开始加密!
看看输出的日志,找到dll文件,再次导入Unity,尝试下吧!
三、测试
1、我们首先测试,加密后的dll,导入Unity是可用的。
2、我们再来看看,用反编译软件破解未加密的dll文件,和加密的dll文件,破解出的内容是怎样的。
反编译未加密dll文件:

反编译加密后的dll文件:
