Unity Obfuscator 使用说明

server/2024/11/15 0:41:31/

一、Assembly - Settings

这个段落描述了在Unity中管理可混淆(obfuscate)程序集及其依赖项的设置。下面是对每个选项的翻译和使用说明:

1. 核心Unity程序集(Assembly-CSharp)

  • Obfuscate Assembly-CSharp: 开启
  • 这是Unity的核心程序集,所有没有存储在程序集定义文件(assembly definition file)中的代码都会被存储在这里。大多数情况下,你会希望开启这个选项以混淆该程序集。

2. 插件程序集(Assembly-CSharp-firstpass)

  • Obfuscate Assembly-CSharp-firstpass: 关闭
  • 这是第二个核心Unity程序集,其中存储了“Plugins”目录中的所有代码文件。大多数情况下,你也会希望混淆这个程序集。

3. 混淆 ‘Assets’ 目录中的程序集定义文件

  • Obfuscate Assembly Definition Files in ‘Assets’: 关闭
  • 开启此选项将搜索“Assets”目录中的所有程序集定义文件,并混淆相应的程序集。

4. 混淆 ‘Packages’ 目录中的程序集定义文件

  • Obfuscate Assembly Definition Files in ‘Packages’: 关闭
  • 开启此选项将搜索“Packages”目录中的程序集定义文件,并混淆相应的程序集。请注意,这里可能也包含Unity核心程序集,因此请小心使用此功能。这是一个测试功能。

5. 混淆外部预编译程序集

  • Obfuscate external assemblies:
  • 在此处输入你想要混淆的外部预编译程序集的名称,例如“MvAssembly.dll”,或输入完整路径,例如“C:/[MyGame]/MyAssembly.dll”。

  • 你可以使用“Add Line”来添加新的程序集路径,也可以使用“Remove Line”来移除现有的路径。

  • 如果你在混淆过程中收到错误信息,比如“Assembly XYZ could not be resolved!”、“Assembly XYZ could not be found!”或类似的错误,可以通过以下方式解决:

  1. 找到该程序集的目录路径。通常,这些程序集可以在你的项目的“Assets”或“Packages”目录中找到。

  2. 如果例如一个名为“GameAnalytics”的程序集未被找到,并且它的位置是“Assets/GameAnalytics/Plugins/GameAnalytics.dll”,那么你可以将相对目录路径“Assets/GameAnalytics/Plugins”添加到下面的列表中。

  3. 如果问题依然存在,尝试添加完整路径,例如“D://[YourProject]/Assets/GameAnalytics/Plugins”。

二、Namespace - Settings

在这里插入图片描述

1. 混淆命名空间(Obfuscate Namespaces)

  • Obfuscate Namespaces: 开启
  • 激活此设置将混淆命名空间。如果可能,混淆器将删除命名空间,从而增加混淆的深度。

2. 跳过特定命名空间

  • Skip following Namespaces:
  • 在此处添加你希望跳过混淆的命名空间。混淆器会根据前缀来决定是否跳过某个命名空间。例如,如果你输入“Unity.StandardAssets”,那么该命名空间中的所有类都将被跳过混淆,且所有以“Unity.StandardAssets”开头的命名空间也会被跳过。
  • **注意:**不要输入空行!否则将会跳过所有命名空间,导致没有任何内容被混淆。

3. 反转命名空间跳过(Vice Versa Namespace Skipping)

  • Vice Versa Namespace Skipping: 关闭/未设置
  • 启用此设置将反转命名空间跳过的逻辑。这样,只有在上面列表中输入的命名空间和类会被混淆,其他的将不会被混淆。

三、Class Obfuscation

在这里插入图片描述在这里插入图片描述

1. 通过访问级别控制混淆(Obfuscation controlled through the accessibility)

  • Obfuscate:
    • Internal: 开启
    • Private: 开启
    • Protected: 开启
    • Public: 开启
  • 这些选项控制不同访问级别的类是否被混淆。例如,Internal、Private、Protected 和 Public 修饰的类都将被混淆。

2. 子类混淆设置(Subclasses)

  • Obfuscate Abstract Classes: 关闭
  • 激活此设置以混淆抽象类。
  • Obfuscate Generic Classes: 关闭

激活此设置以混淆泛型类。

  • Obfuscate Serializable Classes: 关闭

激活此设置以混淆标有 [Serializeable] 特性的类。

如果要混淆可序列化类,必须在“optional”选项卡中激活“Rename Mapping”设置。此选项会保存并加载原始类/方法/字段及其匹配的混淆名称的映射,因为 Unity 会通过名称存储可序列化类。

3. Unity 子类混淆(Unity Subclasses)

  • Obfuscate MonoBehaviour SubClasses: 关闭

激活此设置以混淆 MonoBehaviour 子类。这需要先激活命名空间混淆设置。

  • Obfuscate ‘Not Obfuscatable’ MonoBehaviour SubClasses: 关闭

激活此设置以混淆不能直接混淆的 MonoBehaviour 子类。这通常是因为 Unity 通过反射调用某些类。此情况下使用的技术称为“子类型随机化(subtype
Randomizer)”。类将通过创建大量随机类来混淆。这也需要激活命名空间混淆设置。

  • Obfuscate MonoBehaviour SubClasses in external Assemblies: 关闭

激活此设置以混淆你在程序集设置中指定的外部程序集中的 MonoBehaviour 子类。此设置将以“2018.2 之后”的方式混淆类。

  • Obfuscate ‘Not Obfuscatable’ MonoBehaviour SubClasses in external Assemblies: 关闭

激活此设置以混淆外部程序集中的不能直接混淆的 MonoBehaviour 子类。这种情况通常是因为 Unity 通过反射调用某些类。使用的技术同样是“子类型随机化”,需要激活命名空间混淆设置。

  • Obfuscate MonoBehaviour SubClasses in external Assemblies: 关闭

激活此设置以混淆外部程序集中的 MonoBehaviour 子类,这些程序集是在程序集设置中指定的。如果某些类无法直接混淆(例如,Unity通过反射调用这些类),你可以使用称为“子类型随机化(subtypeRandomizer)”的技术。这将通过创建大量随机类来混淆原始类。此功能需要先激活命名空间混淆设置。

  • Obfuscate ‘Not Obfuscatable’ MonoBehaviour SubClasses in external Assemblies: 关闭

激活此设置以混淆外部程序集中的那些无法直接混淆的 MonoBehaviour 子类。同样,这通常是因为 Unity 通过反射调用这些类。你可以通过“子类型随机化”技术来混淆这些类,此功能也需要命名空间混淆的支持。

4 ScriptableObject 子类混淆

  • Obfuscate ScriptableObject SubClasses: 关闭

激活此设置以混淆 ScriptableObject 子类。这也需要先激活命名空间混淆设置。

5.Playable 子类混淆

  • Obfuscate Playable SubClasses: 关闭

激活此设置以混淆 Playable/PlayableAsset/PlayableBehaviour 子类。此功能同样需要先激活命名空间混淆设置。

四、Method Obfuscation

在这里插入图片描述

激活并管理方法的混淆。如果你想混淆项目中的方法,需要先开启此选项。

1. 基于访问级别的混淆(Accessibility based obfuscation)

  • Obfuscate:
    • Internal: 开启
    • Private: 开启
    • Protected: 开启
    • Public: 开启

这些选项控制不同访问级别的方法是否被混淆。例如,Internal、Private、Protected 和 Public 修饰的方法都将被混淆。

2. 高级设置(Advanced)

  • Obfuscate Unity Methods: 关闭

该选项用于混淆一些简单的 Unity 方法,如 AwakeStartUpdate 等。目前该功能已禁用,正在进行修订。

五、Parameter Obfuscation

在这里插入图片描述

1. 方法参数混淆(Obfuscate Method Parameter)

  • Obfuscate Method Parameter: 关闭

激活此设置以混淆方法的参数和方法的泛型参数。

2. 类参数混淆(Obfuscate Class Parameter)

  • Obfuscate Class Parameter: 关闭

激活此设置以混淆类的泛型参数。

六、Property Obfuscation

在这里插入图片描述

1. 字段混淆(Field Obfuscation)

  • Field Obfuscation: 关闭

激活并管理字段的混淆。如果你想混淆项目中的字段,需要先开启此选项。

2. 基于访问级别的混淆(Accessibility based obfuscation)

  • Obfuscate:
    • Internal: 开启
    • Private: 开启
    • Protected: 开启
    • Public: 开启

这些选项控制不同访问级别的字段是否被混淆。例如,Internal、Private、Protected 和 Public 修饰的字段都将被混淆。

3. 高级设置(Advanced)

  • Obfuscate ‘Serializeable’ Fields: 关闭

激活此设置以混淆标有 [SerializeField] 特性的字段。如果要混淆可序列化字段,必须在“optional”选项卡中激活“RenameMapping”设置。此选项会保存并加载原始类/方法/字段及其匹配的混淆名称的映射,因为 Unity 会通过名称存储可序列化字段。

  • Obfuscate ‘Unity’ Public Fields: 关闭

激活此设置以混淆 MonoBehaviourSerializableNetworkBehaviour 子类中的公共字段。

  • Obfuscate Enum Values: 关闭

激活此设置以混淆枚举的值。

七、Parameter Obfuscation

在这里插入图片描述

1. 属性混淆(Property Obfuscation)

  • Property Obfuscation: 开启

激活并管理属性的混淆。

2. 基于访问级别的混淆(Accessibility based obfuscation)

  • Obfuscate:
    • Internal: 开启
    • Private: 开启
    • Protected: 开启
    • Public: 开启

这些选项控制不同访问级别的属性是否被混淆。

八、Event Obfuscation

在这里插入图片描述

1. 事件混淆(Event Obfuscation)

  • Event Obfuscation: 关闭

激活并管理事件的混淆。

2. 基于访问级别的混淆(Accessibility based obfuscation)

  • Obfuscate:
    • Internal: 开启
    • Private: 开启
    • Protected: 开启
    • Public: 开启

这些选项控制不同访问级别的事件是否被混淆。

九、Logging - Settings

在这里插入图片描述

1. 使用自定义日志文件(Use a custom log file)

  • Use a custom log file: 关闭

激活此设置后,将使用自定义日志文件路径,而不是默认的日志文件路径(Assets/OPS/Obfuscator/Log/[BuildTarget].txt)。

2. 自定义日志文件路径(Custom log file path)

  • Custom log file path:

在此输入混淆过程中使用的自定义日志文件路径。如果选择了自定义日志文件,混淆过程中生成的日志将保存到这个路径。

十、Attribute - Settings

在这里插入图片描述

1. 自定义属性(Custom Attributes)

  • Custom ‘DoNotRename’ Attributes:

这里可以添加自定义属性,这些属性将像混淆器的 DoNotRename 属性一样处理。

2. 添加行(Add Line)/删除行(Remove Line)

  • Add Line/Remove Line:

可以通过这两个按钮添加或删除自定义属性。

十一、Renaming - Settings

在这里插入图片描述

1. 激活的重命名模式(Active renaming pattern)

  • Active renaming pattern: 默认(Default)

你可以选择一个预定义的重命名模式,或者使用自定义模式。需要注意的是,有些字符可能不适用于某些构建目标。例如,构建到 iOS 平台时,会生成基于类文件名的 XCode 项目文件,如果使用了不适合 Mac
平台的字符,可能会导致错误。默认的重命名模式通常是最安全的选择。

2. 自定义重命名模式(Custom renaming pattern)

  • Custom renaming pattern:

如果你选择自定义模式,可以在此输入你想使用的字符集作为重命名模式。不要在字符之间添加分隔符!默认的重命名模式例如是:abcdefghikmnopqrstuvwxyz。你可以随时切换重命名模式,它与重命名映射是独立的。

3. 加载混淆映射文件(Load an obfuscation mapping file)

  • Load an obfuscation mapping file: 关闭

激活此设置可以从文件中加载混淆映射。如果你混淆了可序列化的类、字段等,建议使用此选项。你可以在下方定义文件路径。

4. 加载映射文件路径(Load mapping file path)

  • Load mapping file path:

在此输入你希望加载混淆映射的文件路径。

5. 保存混淆映射文件(Save an obfuscation mapping file)

  • Save an obfuscation mapping file: 关闭

激活此设置可以将混淆映射保存到文件中。如果你混淆了可序列化的类、字段等,建议使用此选项。你可以在下方定义文件路径。

6. 保存映射文件路径(Save mapping file path)

  • Save mapping file path:

在此输入你希望保存混淆映射的文件路径。


http://www.ppmy.cn/server/102140.html

相关文章

C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现

文章目录 strlen的使用和模拟实现函数的原型strlen模拟实现:方法1方法2方法3 strcpy的使用和模拟实现函数的原型strcpy的模拟实现: strcat的使用和模拟实现函数的原型strcat的模拟实现: strcmp的使用和模拟实现函数的原型strcmp的模拟实现 本…

谷粒商城实战笔记-213-商城业务-认证服务-整合短信验证码服务

文章目录 一,开通阿里云云市场短信服务1,阿里云开通免费短信服务并调试2,整合短信服务2.1 下载HttpUtils代码2.2 开发调用短信服务的组件2.3 测试 HttpUtils代码 这一节主要内容是整合短信发送服务。 一,开通阿里云云市场短信服务…

2024年第九届控制、机器人与控制论国际会议(CRC 2024)将在马来西亚槟城举行!

2024年第九届控制、机器人与控制论国际会议(CRC 2024)将于2024年11月21日-11月23日马来西亚槟城举行,由马来西亚理科大学主办。本次会议为与会者提供一个交流的平台,讨论控制、机器人与控制论领域的最新研究成果和未来的研究方向。…

Catf1ag CTF Web(四)

前言 Catf1agCTF 是一个面向所有CTF(Capture The Flag)爱好者的综合训练平台,尤其适合新手学习和提升技能 。该平台由catf1ag团队打造,拥有超过200个原创题目,题目设计注重知识点的掌握,旨在帮助新手掌握C…

微信小程序 ==== 半屏打开小程序

目录 打开半屏小程序 调用流程 打开半屏小程序 半屏小程序环境判断 返回原小程序 使用限制 wx.openEmbeddedMiniProgram 功能描述 参数 wx.navigateBackMiniProgram 功能描述 示例代码 Object wx.getEnterOptionsSync() 功能描述 返回值 返回有效 referrerInfo…

[图解]用例规约之业务规则不是算法

1 00:00:01,530 --> 00:00:03,090 像这种某某算法之类的 2 00:00:03,100 --> 00:00:04,130 它往往是什么 3 00:00:05,590 --> 00:00:07,440 某种实现的一个选择 4 00:00:08,140 --> 00:00:09,550 它很可能不是需求 5 00:00:10,620 --> 00:00:13,240 你要问他…

IOS 04 TangramKit 纯代码开发

本节主要使用TangramKit UI框架进行纯代码开发,相比于 SnapKit,TangramKit 能够更快速更方便的实现 UI布局。TangramKit使用起来跟Android布局控件非常相似,对于Android开发的小伙伴会更容易入手和理解。github地址:https://githu…