From 685f5f55300dc52df5e399bfefd61701dc414b30 Mon Sep 17 00:00:00 2001 From: walon Date: Tue, 20 May 2025 11:08:07 +0800 Subject: [PATCH] add: add EncryptFieldAttribute --- .../CleanUp/RemoveObfuzAttributesPass.cs | 1 + .../FieldEncrypt/ConfigurableEncryptPolicy.cs | 8 ++++++++ .../Editor/Utils/MetaUtil.cs | 5 +++++ .../Runtime/EncryptFieldAttribute.cs | 13 +++++++++++++ .../Runtime/EncryptFieldAttribute.cs.meta | 11 +++++++++++ 5 files changed, 38 insertions(+) create mode 100644 Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs create mode 100644 Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs.meta diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/CleanUp/RemoveObfuzAttributesPass.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/CleanUp/RemoveObfuzAttributesPass.cs index c9e72a9..2855136 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/CleanUp/RemoveObfuzAttributesPass.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/ObfusPasses/CleanUp/RemoveObfuzAttributesPass.cs @@ -29,6 +29,7 @@ namespace Obfuz.ObfusPasses.CleanUp return; var toRemove = new List(); customAttributes.RemoveAll("Obfuz.ObfuzIgnoreAttribute"); + customAttributes.RemoveAll("Obfuz.EncryptFieldAttribute"); } public override void Process() 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 9f09832..2d8051e 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 @@ -29,6 +29,14 @@ namespace Obfuz.ObfusPasses.FieldEncrypt public override bool NeedEncrypt(FieldDef field) { + if (MetaUtil.HasEncryptFieldAttribute(field)) + { + return true; + } + if (MetaUtil.HasObfuzIgnoreAttribute(field) || MetaUtil.HasObfuzIgnoreAttribute(field.DeclaringType)) + { + return false; + } var rule = _configParser.GetFieldRule(field); return rule != null; } 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 4f30f15..d87e1bf 100644 --- a/Obfuz/Packages/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Editor/Utils/MetaUtil.cs @@ -788,5 +788,10 @@ namespace Obfuz.Utils { return obj.CustomAttributes.Any(ca => ca.AttributeType.FullName == "System.Runtime.CompilerServices.CompilerGeneratedAttribute"); } + + public static bool HasEncryptFieldAttribute(IHasCustomAttribute obj) + { + return obj.CustomAttributes.Any(ca => ca.AttributeType.FullName == "Obfuz.EncryptFieldAttribute"); + } } } diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs b/Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs new file mode 100644 index 0000000..cf8eecb --- /dev/null +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Obfuz +{ + [AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)] + public class EncryptFieldAttribute : Attribute + { + } +} diff --git a/Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs.meta b/Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs.meta new file mode 100644 index 0000000..a76ea9d --- /dev/null +++ b/Obfuz/Packages/com.code-philosophy.obfuz/Runtime/EncryptFieldAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30f22110938816d4cb7e9cc9a176fd1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: