修复重构 ConstEncrypt后的Bug
parent
8cc1110e07
commit
2eb0a6cfc8
|
@ -137,6 +137,7 @@ namespace Obfuz.ObfusPasses.ConstEncrypt
|
||||||
switch (ele.Name)
|
switch (ele.Name)
|
||||||
{
|
{
|
||||||
case "global": _global = ParseObfuscationRule(configFile, ele); break;
|
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}");
|
default: throw new Exception($"Invalid xml file {configFile}, unknown node {ele.Name}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -200,107 +201,92 @@ namespace Obfuz.ObfusPasses.ConstEncrypt
|
||||||
return rule;
|
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");
|
throw new Exception($"Invalid xml file, int-range {value} is invalid");
|
||||||
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<int>(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<long>(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<float>(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<double>(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<int>(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<int>(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;
|
|
||||||
}
|
}
|
||||||
default: throw new Exception($"Invalid xml file, unknown node {childEle.Name}");
|
notEncryptIntRanges.Add(new NumberRange<int>(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<long>(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<float>(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<double>(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<int>(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<int>(ConfigUtil.ParseNullableInt(parts[0]), ConfigUtil.ParseNullableInt(parts[1])));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default: throw new Exception($"Invalid xml file, unknown whitelist type {type} in {childEle.Name} node");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue