该文章为Obfuscator插件中文文档
Buttons
对于更强的混淆,考虑以编程方式分配按钮点击:
using UnityEngine;
using UnityEngine.UI;
using Beebyte.Obfuscator;
public class Buds : MonoBehaviour
{
public Button Button;
public void Start()
{
Button.onClick.AddListener(CodedClick);
}
//Assigned in the Start() method
private void CodedClick() //This gets obfuscated
{
Debug.Log("Coded Click");
}
// Assigned through the inspector within On Click () +
// so requires [SkipRename] when obfuscating public mono methods
[SkipRename]
public void InspectorClick() //Visible
{
Debug.Log("Inspector click");
}
}
在此示例中,“CodedClick”将被混淆
Animation Clips
以与按钮相同的方式,考虑以编程方式添加这些使用AnimationClip.AddEvent(AnimationEvent evt)。
否则,如果通过 Unity Inspector 分配,请记住使用 [SkipRename] 注释方法
方法
更多的方法会导致更好的混淆。 遵循良好的软件实践,例如 S.O.L.I.D. 不仅会提高代码的可维护性,而且更难进行逆向工程。
检查您的保护
使用assembly检查器来验证混淆和/或调整混淆器选项以提高其质量非常重要
有许多不同的assembly检查员可用。 示例包括 DotPeek(由 JetBrains 提供且免费)和 ILSpy(开源)。
您可能需要先从最终版本中提取 DLL,您可以在线查找资源来帮助解决此问题。
IL2CPP
- 查看混淆效果的一种简单方法是在文本编辑器中查看 global-metadata.dat 文件并搜索方法名称
- 指示混淆器混淆 IL2CPP 构建不需要额外的步骤
- 请注意,根据 Unity 版本和构建目标,Library/ScriptAssemblies/ 中的程序集不会被混淆。 要查看混淆的表格,请查看 Library/PlayerDataCache/Data/Managed/ 中的表格,或者
- 您还可以查看 Classes/Native/Bulk_Assembly-CSharp_0.cpp 以查看实际的混淆。
Asset Store 发布/创建库
如果您打算混淆一个库以供其他人在他们的项目中使用,那么为了避免给您的用户带来麻烦(并可能有助于您的项目层次结构),最好在您创建自己的 [Skip]、[SkipRename] 等版本时 需要他们。
为此,您应该创建一个类,例如:
using System;
namespace MyCompany.Obfuscator {
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.Struct |
AttributeTargets.Method | AttributeTargets.Field | AttributeTargets.Parameter |
AttributeTargets.Event | AttributeTargets.Enum | AttributeTargets.Property |
AttributeTargets.Delegate)]
public class SkipAttribute : System.Attribute {
public SkipAttribute() {
}
}
}
然后将此属性指定为等效属性,就像使用 Beebyte.Obfuscator.SkipAttribute 一样:
然后将它们排除在混淆之外:
混淆器版本
建议始终使用最新的可用混淆器版本。 向后兼容性始终是鼓励用户经常更新的优先事项。 混淆器对其版本号使用一种语义版本控制:
Obfuscator v[Major].[Minor].[Patch]
-
[Major]
升级到新的主要版本可能需要额外的配置步骤才能使您的构建成功。 然而,这可能仅在使用某些可选功能时才需要。 主要构建不一定向后兼容。 -
[Minor]
此版本包含新功能和可能的错误修复 -
[Patch]
此版本包含错误修复。