如何对自己的Unity项目代码进行加密混淆?

如何对自己的Unity项目代码进行加密混淆?_第1张图片

加密混淆的目的是让不怀好意者更难对你的项目进行逆向工程,我们可以使用Obfuscator 插件.

该插件的好处是与Unity构建过程无缝链接源文件的内容保持不变,而混淆只针对于已编译的程序集


一、导入及配置

1.插件版本:Obfuscator 3.9.0+

2.在Unity项目工程文件中导入该插件

3.导入完成后,先把工程项目打包Build出来一遍,会适配Obfuscator插件

4.Build完成后,控制台会显示Obfuscation successful,说明适配已经完成了
在这里插入图片描述

5.在Editor\Beebyte\Obfuscator文件夹目录中会多出了一个ObfuscatorOptions的配置文件
如何对自己的Unity项目代码进行加密混淆?_第2张图片

6.选中ObfuscatorOptions文件,在Inspector中可看到它的配置信息面板
如何对自己的Unity项目代码进行加密混淆?_第3张图片


二、详细用法解释

如何对自己的Unity项目代码进行加密混淆?_第4张图片
1.Obfuscation Enabled勾选即启用混淆代码插件
2.Obfuscate development builds 勾选即在Unity Development Builds模式中启用

如何对自己的Unity项目代码进行加密混淆?_第5张图片
3.混淆所有程序集,由Unity构建过程创建的要模糊化的程序集列表,包含文件扩展名
4.需要混淆的程序集文件名称

如何对自己的Unity项目代码进行加密混淆?_第6张图片
需要混淆代码的部分,包括:类名、方法名、参数、字段、属性、事件

如何对自己的Unity项目代码进行加密混淆?_第7张图片
5.枚举常量的混淆
6.公开的Mono方法、公开的Mono字段、以及MonoBehaviour类名的混淆,MonoBehaviour类名的混淆目前仅可在PC、Mac、Linux中使用
7.添加Obfuscator版本特性,启用此功能可防止意外地多次混淆相同的DLL。如果你选择通过菜单选项手动混淆dll,特别推荐使用它。

在这里插入图片描述
8.设置混淆的细节级别。在弹出窗口中显示的细节级别。Detailed会将项目的混淆时间增加40%左右

如何对自己的Unity项目代码进行加密混淆?_第8张图片

9.上面都是一些混淆的属性,包括添加虚假的代码的参数,红圈内两个参数建议填写91和1,混淆的代码会呈现的是“[]”,在视觉上会是看到这种效果:
如何对自己的Unity项目代码进行加密混淆?_第9张图片

Add fake code(添加虚假代码):推荐使用,它会复制现有的方法,并以误导人们的方式巧妙地修改副本。虽会增加文件大小和增加混淆构建时间,但不会改变代码流。

10.需要添加跳过混淆的命名空间、类、unity方法
如何对自己的Unity项目代码进行加密混淆?_第10张图片

11.其他参数就不一一列举了,可根据英文意思推断出其用法


更深入的用法:(必须懂)

[Skip][SkipRename]的标注
1.在Unity中若有拖拽赋值的点击事件或Animation Clip方法,该方法需要标注[SkipRename]
在这里插入图片描述

2.所有的数据类需要注明[Skip]不然调用不到里面的属性

3.插件不会去混淆Plugins文件夹内的代码,若第三方插件失效的话,看看有没有放置到Plugins文件夹内

4.跳过命名空间递归:
如何对自己的Unity项目代码进行加密混淆?_第11张图片

当勾选时,所有的AAA的子命名空间也会被跳过

如何对自己的Unity项目代码进行加密混淆?_第12张图片

当不勾选时,所有的AAA的子命名空间不会被跳过
如何对自己的Unity项目代码进行加密混淆?_第13张图片


三、反编译工具:ILSpy、DotPeek

https://github.com/icsharpcode/ILSpy
https://www.jetbrains.com/decompiler

使用这些工具可对程序进行反编译,查看混淆的效果

你可能感兴趣的:(Unity3d,unity,游戏引擎,unity3d)