From 214767623f6b7adcfcd1789dc78ceebbb8bd12b5 Mon Sep 17 00:00:00 2001 From: walon Date: Mon, 5 May 2025 10:45:32 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4SymbolObfus=20Rule=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SymbolObfus/RuleBasedRenamePolicy.cs | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/Editor/ObfusPasses/SymbolObfus/RuleBasedRenamePolicy.cs b/Editor/ObfusPasses/SymbolObfus/RuleBasedRenamePolicy.cs index 3905a1b..d5b7a3d 100644 --- a/Editor/ObfusPasses/SymbolObfus/RuleBasedRenamePolicy.cs +++ b/Editor/ObfusPasses/SymbolObfus/RuleBasedRenamePolicy.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; +using System.Xml.Linq; using UnityEngine; namespace Obfuz.ObfusPasses.SymbolObfus @@ -585,16 +586,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus } switch (element.Name) { - case "rule": + case "rules": { - string ruleName = element.GetAttribute("name"); - RuleType ruleType = ParseRuleType(element.GetAttribute("type")); - var key = (ruleName, ruleType); - if (_rawRuleElements.ContainsKey(key)) - { - throw new Exception($"Invalid xml file {xmlFile}, duplicate rule name:{ruleName} type:{ruleType}"); - } - _rawRuleElements.Add(key, element); + ParseRules(xmlFile, element); break; } case "assembly": @@ -610,6 +604,27 @@ namespace Obfuz.ObfusPasses.SymbolObfus } } + void ParseRules(string xmlFile, XmlElement rulesNode) + { + foreach (XmlNode node in rulesNode) + { + if (!(node is XmlElement ruleEle)) + { + continue; + } + string ruleName = ruleEle.GetAttribute("name"); + string ruleTypeName = ruleEle.Name; + RuleType ruleType = ParseRuleType(ruleTypeName); + var key = (ruleName, ruleType); + if (_rawRuleElements.ContainsKey(key)) + { + throw new Exception($"Invalid xml file {xmlFile}, duplicate rule name:{ruleName} type:{ruleType}"); + } + _rawRuleElements.Add(key, ruleEle); + } + + } + private ModifierType ComputeModifierType(TypeAttributes visibility) { if (visibility == TypeAttributes.NotPublic || visibility == TypeAttributes.NestedPrivate)