Unity Obfuscator

官方仓库
学习日期:2023-07-13(防止后续仓库特性或功能更新无对比时间)
目标:本文介绍使用此github库,混淆unity项目的代码,在ILSpy中无法正确反编译。

一、说明

官方说明
配置界面

Features:

  • ControlFlow:控制流程加密。对程序函数方法进行流程混淆,不改变执行流程,但是打乱编译流程以及IL码顺序,干扰破解。
  • NumObfus:整数预设混淆。加密程序集中所有int预设常量。
  • LocalVariables2Field:局部变量混淆为字段。程序函数的局部变量进行混淆加密,进一步降低代码可读性。
  • StringCrypt:字符串加密。 每个字符串对应一个单独的密码和解密函数。
  • ObfusFunc:类&方法&字段混淆(支持MOnoBehaviour)。采用Unity函数名堆积作为字典,此方法混淆的函数难以被反混淆器识别为Obfuscated或JunkFunc。
  • Anti De4dot:使反混淆器失效。加固程序集,使de4dot无法对齐完成还原及反混淆。
  • Anti Anti-ILDASM:使反汇编器失效(不支持IL2CPP)。通过MS提供的SuppresslldasmAttribute使反编译器无法正常工作。
  • PEPacker:去除NET标志,使ILSpy,DnSpy等软件无法正确识别NET程序集(不支持IL2CPP)。
  • ErrorMethod:加固方法使DnSpy等反编译器无法还原代码。

Notice:

  • Native层直接调用C#或Unity内置API发送事件到C#的类和方法不可混淆(大多在移动平台)
  • 特殊插件的脚本不可混淆,如:xLua和与之绑定的C#脚本
  • 插件会自动忽略Custom_Ingore_List中的类名
  • PEPacker仅支持Windows平台的Mono编译提供自动加固,Android需要先解压apk,对Assmebly-CSharp.dll手动加固,再二次打包apk并签名

FAQ:

  • ControlFlow可能存在bug,如果unity抛出异常,可以尝试关闭ControlFlow功能
  • 构建IL2CPP个别方法抛出异常,可将HandleShoot函数添加到ignore_ControlFlow_Method中

二、实测

正常build项目即可。有如下打印:
Unity Obfuscator_第1张图片
混淆之后用ILSpy:
Unity Obfuscator_第2张图片
取消所有混淆功能重新打包,用ILSpy查看:
Unity Obfuscator_第3张图片

你可能感兴趣的:(Frameworks,unity,代码混淆)