调整SymbolObfus Rule配置格式

backup
walon 2025-05-05 10:45:32 +08:00
parent 27a11f6811
commit 214767623f
1 changed files with 24 additions and 9 deletions

View File

@ -6,6 +6,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Xml; using System.Xml;
using System.Xml.Linq;
using UnityEngine; using UnityEngine;
namespace Obfuz.ObfusPasses.SymbolObfus namespace Obfuz.ObfusPasses.SymbolObfus
@ -585,16 +586,9 @@ namespace Obfuz.ObfusPasses.SymbolObfus
} }
switch (element.Name) switch (element.Name)
{ {
case "rule": case "rules":
{ {
string ruleName = element.GetAttribute("name"); ParseRules(xmlFile, element);
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);
break; break;
} }
case "assembly": 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) private ModifierType ComputeModifierType(TypeAttributes visibility)
{ {
if (visibility == TypeAttributes.NotPublic || visibility == TypeAttributes.NestedPrivate) if (visibility == TypeAttributes.NotPublic || visibility == TypeAttributes.NestedPrivate)