diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/ConfigurableEncryptPolicy.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/ConfigurableEncryptPolicy.cs index 2d8051e..15ce929 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/ConfigurableEncryptPolicy.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/FieldEncrypt/ConfigurableEncryptPolicy.cs @@ -33,7 +33,7 @@ namespace Obfuz.ObfusPasses.FieldEncrypt { return true; } - if (MetaUtil.HasObfuzIgnoreAttribute(field) || MetaUtil.HasObfuzIgnoreAttribute(field.DeclaringType)) + if (MetaUtil.HasObfuzIgnoreAttribute(field) || MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(field.DeclaringType)) { return false; } diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs index 11eb0d2..de0854d 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/SymbolObfus/Policies/SystemRenamePolicy.cs @@ -12,11 +12,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (MetaUtil.HasObfuzIgnoreAttribute(typeDef)) - { - return false; - } - if (typeDef.DeclaringType != null && MetaUtil.HasObfuzIgnoreAttribute(typeDef.DeclaringType)) + if (MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(typeDef)) { return false; } @@ -34,7 +30,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies return false; } - if (MetaUtil.HasObfuzIgnoreAttribute(methodDef) || MetaUtil.HasObfuzIgnoreAttribute(methodDef.DeclaringType)) + if (MetaUtil.HasObfuzIgnoreAttribute(methodDef) || MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(methodDef.DeclaringType)) { return false; } @@ -47,7 +43,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (MetaUtil.HasObfuzIgnoreAttribute(fieldDef) || MetaUtil.HasObfuzIgnoreAttribute(fieldDef.DeclaringType)) + if (MetaUtil.HasObfuzIgnoreAttribute(fieldDef) || MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(fieldDef.DeclaringType)) { return false; } @@ -64,7 +60,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (MetaUtil.HasObfuzIgnoreAttribute(propertyDef) || MetaUtil.HasObfuzIgnoreAttribute(propertyDef.DeclaringType)) + if (MetaUtil.HasObfuzIgnoreAttribute(propertyDef) || MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(propertyDef.DeclaringType)) { return false; } @@ -77,7 +73,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus.Policies { return false; } - if (MetaUtil.HasObfuzIgnoreAttribute(eventDef) || MetaUtil.HasObfuzIgnoreAttribute(eventDef.DeclaringType)) + if (MetaUtil.HasObfuzIgnoreAttribute(eventDef) || MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(eventDef.DeclaringType)) { return false; } diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfuscationMethodWhitelist.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfuscationMethodWhitelist.cs index 3884738..87ca94f 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfuscationMethodWhitelist.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfuscationMethodWhitelist.cs @@ -57,7 +57,7 @@ namespace Obfuz { return true; } - if (ShouldBeIgnoredByCustomAttribute(type)) + if (MetaUtil.HasObfuzIgnoreAttributeInSelfOrParent(type)) { return true; } diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs index d87e1bf..711e957 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs @@ -793,5 +793,21 @@ namespace Obfuz.Utils { return obj.CustomAttributes.Any(ca => ca.AttributeType.FullName == "Obfuz.EncryptFieldAttribute"); } + + public static bool HasObfuzIgnoreAttributeInSelfOrParent(TypeDef typeDef) + { + while (true) + { + if (HasObfuzIgnoreAttribute(typeDef)) + { + return true; + } + typeDef = typeDef.DeclaringType; + if (typeDef == null) + { + return false; + } + } + } } }