diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs index 463b323..c404ff1 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs @@ -2,6 +2,7 @@ using Obfuz.Utils; using System; using System.Collections.Generic; +using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; @@ -134,6 +135,10 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } + if (typeDef.Methods.Any(m => MetaUtil.HasRuntimeInitializeOnLoadMethodAttribute(m))) + { + return false; + } return true; } @@ -143,6 +148,10 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return !s_monoBehaviourEvents.Contains(methodDef.Name); } + if (MetaUtil.HasRuntimeInitializeOnLoadMethodAttribute(methodDef)) + { + return false; + } if (methodDef.DeclaringType.FullName.StartsWith("UnitySourceGeneratedAssemblyMonoScriptTypes_")) { return false; diff --git a/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs b/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs index e18cade..3103322 100644 --- a/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs +++ b/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs @@ -860,5 +860,10 @@ namespace Obfuz.Utils { return obj.CustomAttributes.Any(ca => ca.AttributeType.FullName == "Obfuz.EncryptFieldAttribute"); } + + public static bool HasRuntimeInitializeOnLoadMethodAttribute(MethodDef method) + { + return method.CustomAttributes.Any(ca => ca.AttributeType.FullName == "UnityEngine.RuntimeInitializeOnLoadMethodAttribute"); + } } }