From c1600f0f4dff98620f93598198d9c52ef437305c Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 27 May 2025 09:33:17 +0800 Subject: [PATCH] =?UTF-8?q?-=20Serializable=E7=B1=BB=E5=9E=8B=E5=90=8D?= =?UTF-8?q?=E4=B9=9F=E4=BC=9A=E8=A2=AB=E6=B7=B7=E6=B7=86=EF=BC=8C=E4=BD=86?= =?UTF-8?q?=E5=8F=AF=E5=BA=8F=E5=88=97=E5=8C=96=E5=AD=97=E6=AE=B5=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E8=A2=AB=E6=B7=B7=E6=B7=86=20-=20Obfuz.EncryptField?= =?UTF-8?q?=E7=B1=BB=E4=B8=8D=E4=BC=9A=E8=A2=AB=E6=B7=B7=E6=B7=86=20-=20?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E6=98=AFMonoBehaviour=E7=BB=A7=E6=89=BF?= =?UTF-8?q?=E7=9A=84=E7=B1=BB=E5=9E=8B=E4=B8=AD=E4=BA=8B=E4=BB=B6=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=90=8D=E6=89=8D=E4=B8=8D=E4=BC=9A=E8=A2=AB=E6=B7=B7?= =?UTF-8?q?=E6=B7=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Policies/SystemRenamePolicy.cs | 2 +- .../SymbolObfus/Policies/UnityRenamePolicy.cs | 4 ++-- .../Editor/Utils/MetaUtil.cs | 21 +++++++------------ 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs index b259ddb..4fd38fd 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs @@ -7,7 +7,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { private bool IsFullIgnoreObfuscatedType(TypeDef typeDef) { - return typeDef.FullName == "Obfuz.ObfuzIgnoreAttribute" || typeDef.FullName == "Obfuz.ObfuzScope"; + return typeDef.FullName == "Obfuz.ObfuzIgnoreAttribute" || typeDef.FullName == "Obfuz.ObfuzScope" || typeDef.FullName == "Obfuz.EncryptFieldAttribute"; } public override bool NeedRename(TypeDef typeDef) 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 a758199..e98fd4e 100644 --- a/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs +++ b/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/UnityRenamePolicy.cs @@ -141,7 +141,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies public override bool NeedRename(TypeDef typeDef) { - if (MetaUtil.IsScriptOrSerializableType(typeDef)) + if (MetaUtil.IsScriptType(typeDef)) { return false; } @@ -163,7 +163,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies public override bool NeedRename(MethodDef methodDef) { TypeDef typeDef = methodDef.DeclaringType; - if (MetaUtil.IsInheritFromUnityObject(typeDef) && s_monoBehaviourEvents.Contains(methodDef.Name)) + if (MetaUtil.IsInheritFromMonoBehaviour(typeDef) && s_monoBehaviourEvents.Contains(methodDef.Name)) { return false; } diff --git a/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs b/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs index f4ca314..8d2525c 100644 --- a/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs +++ b/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs @@ -116,7 +116,7 @@ namespace Obfuz.Utils return null; } - public static bool IsInheritFromUnityObject(TypeDef typeDef) + public static bool IsInheritFromMonoBehaviour(TypeDef typeDef) { TypeDef cur = typeDef; while (true) @@ -126,7 +126,7 @@ namespace Obfuz.Utils { return false; } - if (cur.Name == "Object" && cur.Namespace == "UnityEngine" && cur.Module.Name == "UnityEngine.CoreModule.dll") + if (cur.Name == "MonoBehaviour" && cur.Namespace == "UnityEngine" && cur.Module.Name == "UnityEngine.CoreModule.dll") { return true; } @@ -134,18 +134,8 @@ namespace Obfuz.Utils } - - public static bool IsScriptOrSerializableType(TypeDef type) + public static bool IsScriptType(TypeDef type) { - if (type.ContainsGenericParameter) - { - return false; - } - if (type.IsSerializable) - { - return true; - } - for (TypeDef parentType = GetBaseTypeDef(type); parentType != null; parentType = GetBaseTypeDef(parentType)) { if ((parentType.Name == "MonoBehaviour" || parentType.Name == "ScriptableObject") @@ -159,6 +149,11 @@ namespace Obfuz.Utils return false; } + public static bool IsScriptOrSerializableType(TypeDef type) + { + return type.IsSerializable || IsScriptType(type); + } + public static bool IsSerializableTypeSig(TypeSig typeSig) { typeSig = typeSig.RemovePinnedAndModifiers();