From 2eb0a6cfc89d5148541c0dfd4ebf9946854d917d Mon Sep 17 00:00:00 2001 From: walon Date: Sat, 10 May 2025 20:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=8D=E6=9E=84=20ConstEnc?= =?UTF-8?q?rypt=E5=90=8E=E7=9A=84Bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConstEncrypt/ConfigurableEncryptPolicy.cs | 172 ++++++++---------- 1 file changed, 79 insertions(+), 93 deletions(-) diff --git a/Editor/ObfusPasses/ConstEncrypt/ConfigurableEncryptPolicy.cs b/Editor/ObfusPasses/ConstEncrypt/ConfigurableEncryptPolicy.cs index 93ac37a..3fb6230 100644 --- a/Editor/ObfusPasses/ConstEncrypt/ConfigurableEncryptPolicy.cs +++ b/Editor/ObfusPasses/ConstEncrypt/ConfigurableEncryptPolicy.cs @@ -137,6 +137,7 @@ namespace Obfuz.ObfusPasses.ConstEncrypt switch (ele.Name) { case "global": _global = ParseObfuscationRule(configFile, ele); break; + case "whitelist": ParseWhitelist(configFile, ele); break; default: throw new Exception($"Invalid xml file {configFile}, unknown node {ele.Name}"); } } @@ -200,107 +201,92 @@ namespace Obfuz.ObfusPasses.ConstEncrypt return rule; } - private void ParseWhitelist(string configFile, XmlElement ruleEle) + private void ParseWhitelist(string configFile, XmlElement childEle) { - foreach (XmlNode xmlNode in ruleEle.ChildNodes) + string type = childEle.GetAttribute("type"); + if (string.IsNullOrEmpty(type)) { - if (!(xmlNode is XmlElement childEle)) + throw new Exception($"Invalid xml file, whitelist type is empty"); + } + string value = childEle.InnerText; + switch (type) + { + case "int": { - continue; + notEncryptInts.AddRange(value.Split(",").Select(s => int.Parse(s.Trim()))); + break; } - switch (childEle.Name) + case "long": { - case "whitelist": + notEncryptLongs.AddRange(value.Split(",").Select(s => long.Parse(s.Trim()))); + break; + } + case "string": + { + notEncryptStrings.AddRange(value.Split(",").Select(s => s.Trim())); + break; + } + case "int-range": + { + var parts = value.Split(","); + if (parts.Length != 2) { - string type = childEle.GetAttribute("type"); - if (string.IsNullOrEmpty(type)) - { - throw new Exception($"Invalid xml file, whitelist type is empty"); - } - string value = childEle.InnerText; - switch (type) - { - case "int": - { - notEncryptInts.AddRange(value.Split(",").Select(s => int.Parse(s.Trim()))); - break; - } - case "long": - { - notEncryptLongs.AddRange(value.Split(",").Select(s => long.Parse(s.Trim()))); - break; - } - case "string": - { - notEncryptStrings.AddRange(value.Split(",").Select(s => s.Trim())); - break; - } - case "int-range": - { - var parts = value.Split(","); - if (parts.Length != 2) - { - throw new Exception($"Invalid xml file, int-range {value} is invalid"); - } - notEncryptIntRanges.Add(new NumberRange(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1]))); - break; - } - case "long-range": - { - var parts = value.Split(","); - if (parts.Length != 2) - { - throw new Exception($"Invalid xml file, long-range {value} is invalid"); - } - notEncryptLongRanges.Add(new NumberRange(ConfigUtil.ParseNullableLong(parts[0]), ConfigUtil.ParseNullableLong(parts[1]))); - break; - } - case "float-range": - { - var parts = value.Split(","); - if (parts.Length != 2) - { - throw new Exception($"Invalid xml file, float-range {value} is invalid"); - } - notEncryptFloatRanges.Add(new NumberRange(ConfigUtil.ParseNullableFloat(parts[0]), ConfigUtil.ParseNullableFloat(parts[1]))); - break; - } - case "double-range": - { - var parts = value.Split(","); - if (parts.Length != 2) - { - throw new Exception($"Invalid xml file, double-range {value} is invalid"); - } - notEncryptDoubleRanges.Add(new NumberRange(ConfigUtil.ParseNullableDouble(parts[0]), ConfigUtil.ParseNullableDouble(parts[1]))); - break; - } - case "string-length-range": - { - var parts = value.Split(","); - if (parts.Length != 2) - { - throw new Exception($"Invalid xml file, string-length-range {value} is invalid"); - } - notEncryptStringLengthRanges.Add(new NumberRange(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1]))); - break; - } - case "array-length-range": - { - var parts = value.Split(","); - if (parts.Length != 2) - { - throw new Exception($"Invalid xml file, array-length-range {value} is invalid"); - } - notEncryptArrayLengthRanges.Add(new NumberRange(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1]))); - break; - } - default: throw new Exception($"Invalid xml file, unknown whitelist type {type} in {childEle.Name} node"); - } - break; + throw new Exception($"Invalid xml file, int-range {value} is invalid"); } - default: throw new Exception($"Invalid xml file, unknown node {childEle.Name}"); + notEncryptIntRanges.Add(new NumberRange(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1]))); + break; } + case "long-range": + { + var parts = value.Split(","); + if (parts.Length != 2) + { + throw new Exception($"Invalid xml file, long-range {value} is invalid"); + } + notEncryptLongRanges.Add(new NumberRange(ConfigUtil.ParseNullableLong(parts[0]), ConfigUtil.ParseNullableLong(parts[1]))); + break; + } + case "float-range": + { + var parts = value.Split(","); + if (parts.Length != 2) + { + throw new Exception($"Invalid xml file, float-range {value} is invalid"); + } + notEncryptFloatRanges.Add(new NumberRange(ConfigUtil.ParseNullableFloat(parts[0]), ConfigUtil.ParseNullableFloat(parts[1]))); + break; + } + case "double-range": + { + var parts = value.Split(","); + if (parts.Length != 2) + { + throw new Exception($"Invalid xml file, double-range {value} is invalid"); + } + notEncryptDoubleRanges.Add(new NumberRange(ConfigUtil.ParseNullableDouble(parts[0]), ConfigUtil.ParseNullableDouble(parts[1]))); + break; + } + case "string-length-range": + { + var parts = value.Split(","); + if (parts.Length != 2) + { + throw new Exception($"Invalid xml file, string-length-range {value} is invalid"); + } + notEncryptStringLengthRanges.Add(new NumberRange(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1]))); + break; + } + case "array-length-range": + { + var parts = value.Split(","); + if (parts.Length != 2) + { + throw new Exception($"Invalid xml file, array-length-range {value} is invalid"); + } + notEncryptArrayLengthRanges.Add(new NumberRange(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1]))); + break; + } + default: throw new Exception($"Invalid xml file, unknown whitelist type {type} in {childEle.Name} node"); } }