需求

需要对 Unity 中使用的 DLL 进行混淆,只要代码反编译后不容易读即可。

环境

  • Windows 10 1803
  • Unity 5.4.2f2
  • ConfuserEx v1.0.0

软件

Obfuscar

首先尝试的是 Obfuscar

虽然官网做得很好,但是文档并不清楚、内容错误,自行研究安装后发现无法正确混淆。

ConfuserEx

第二个尝试的是 ConfuserEx

这款软件同时提供了命令行与图形界面

处理

准备

将要混淆的 DLL 放到单独目录中,从 Unity 安装目录中拷贝依赖 DLL 文件,这里需要根据具体依赖决定是否拷贝更多文件。

  • Editor\Data\Managed\UnityEditor.dll
  • Editor\Data\Managed\UnityEngine.dll
  • Editor\Data\UnityExtensions\Unity\GUISystem\UnityEngine.UI.dll

混淆

打开 ConfuserEx

Project

将要混淆的 DLL 拖放到 Project 的列表中

Settings

Settings 标签页中点击刚刚拖放进来的 DLL,再点击右侧的 + 号,列表中出现一个 true

选中列表中的 true 后再点击右侧第三个编辑按钮,弹出编辑界面。

Edit rule... 界面中的 PresetProtections 是并集关系,建议根据需要手动选择需要的功能。

这里可以一个选项一个选项的开启,混淆后测试,保证 DLL 工作正常。

这里是测试可用的选项列表:

  • ctrl flow
  • anti ildasm
  • anti debug
  • ref proxy

Protect

直接点击 Protect 按钮即可在 DLL 所在的目录中的 Confused 目录找到混淆之后的 DLL。