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

本节目标,加密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版本时报错。


 
 
  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)

 

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文件:

加密后,私有变量/函数名已被保护起来
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中进行数据加密可以通过多种方式实现。下面列举了一些常见的方法: 1. 使用对称加密算法:这种方法使用相同的密钥对数据进行加密和解密。Unity中可以使用.NET平台提供的加密库,如AES或DES算法。你可以使用这些算法对敏感数据进行加密,然后再保存到文件或传输到网络。 2. 使用非对称加密算法:这种方法使用公钥加密数据,然后使用私钥解密数据Unity中可以使用.NET平台提供的RSA算法。你可以生成一对公钥和私钥,将公钥嵌入到游戏中,用于加密数据,然后使用私钥进行解密。 3. 使用哈希算法:这种方法通常用于验证数据的完整性。你可以使用Unity提供的哈希算法(如MD5或SHA1)对数据进行哈希运算,生成一个固定长度的摘要。在验证数据时,你可以重新计算摘要并与原始摘要进行比较,以确定数据是否被篡改。 4. 使用插件或第三方库:Unity有一个强大的插件生态系统,你可以寻找第三方插件或库来实现更复杂的加密需求。例如,你可以使用开源的加密库(如OpenSSL)来增强Unity加密功能。 无论你选择哪种方法,都需要注意以下几点: - 密钥管理:确保密钥的安全存储和传输,以防止密钥泄露。 - 加密性能:加密算法可能会对性能产生一定影响。在使用加密时,要进行充分的性能测试,以确保不会对游戏的帧率和响应时间产生不良影响。 - 安全性评估:要评估加密方案的安全性,并根据实际需求调整加密的强度。敏感数据的安全性是一个复杂的问题,需要综合考虑多个因素。 请注意,数据加密只是安全性的一部分。在设计游戏时,还需要考虑其他安全措施,如输入验证、防范攻击等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值