混淆名默认加$前缀,避免与原始名称冲突

backup
walon 2025-05-05 10:24:13 +08:00
parent c875577939
commit 7876062292
5 changed files with 13 additions and 6 deletions

View File

@ -9,16 +9,18 @@ namespace Obfuz.ObfusPasses.SymbolObfus
public class NameMaker : NameMakerBase public class NameMaker : NameMakerBase
{ {
private readonly string _namePrefix;
private readonly List<string> _wordSet; private readonly List<string> _wordSet;
public NameMaker(List<string> wordSet) public NameMaker(string namePrefix, List<string> wordSet)
{ {
_namePrefix = namePrefix;
_wordSet = wordSet; _wordSet = wordSet;
} }
protected override INameScope CreateNameScope() protected override INameScope CreateNameScope()
{ {
return new NameScope(_wordSet); return new NameScope(_namePrefix, _wordSet);
} }
} }
} }

View File

@ -14,7 +14,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
return new DebugNameMaker(); return new DebugNameMaker();
} }
public static INameMaker CreateNameMakerBaseASCIICharSet() public static INameMaker CreateNameMakerBaseASCIICharSet(string namePrefix)
{ {
var words = new List<string>(); var words = new List<string>();
for (int i = 0; i < 26; i++) for (int i = 0; i < 26; i++)
@ -22,7 +22,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
words.Add(((char)('a' + i)).ToString()); words.Add(((char)('a' + i)).ToString());
words.Add(((char)('A' + i)).ToString()); words.Add(((char)('A' + i)).ToString());
} }
return new NameMaker(words); return new NameMaker(namePrefix, words);
} }
} }
} }

View File

@ -7,17 +7,20 @@ namespace Obfuz.ObfusPasses.SymbolObfus
public class NameScope : NameScopeBase public class NameScope : NameScopeBase
{ {
private readonly string _namePrefix;
private readonly List<string> _wordSet; private readonly List<string> _wordSet;
private int _nextIndex; private int _nextIndex;
public NameScope(List<string> wordSet) public NameScope(string namePrefix, List<string> wordSet)
{ {
_namePrefix = namePrefix;
_wordSet = wordSet; _wordSet = wordSet;
_nextIndex = 0; _nextIndex = 0;
} }
protected override void BuildNewName(StringBuilder nameBuilder, string originalName, string lastName) protected override void BuildNewName(StringBuilder nameBuilder, string originalName, string lastName)
{ {
nameBuilder.Append(_namePrefix);
for (int i = _nextIndex++; ;) for (int i = _nextIndex++; ;)
{ {
nameBuilder.Append(_wordSet[i % _wordSet.Count]); nameBuilder.Append(_wordSet[i % _wordSet.Count]);

View File

@ -58,7 +58,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
_obfuscationRuleFiles = settings.ruleFiles.ToList(); _obfuscationRuleFiles = settings.ruleFiles.ToList();
_renameRecordMap = new RenameRecordMap(settings.mappingFile); _renameRecordMap = new RenameRecordMap(settings.mappingFile);
_virtualMethodGroupCalculator = new VirtualMethodGroupCalculator(); _virtualMethodGroupCalculator = new VirtualMethodGroupCalculator();
_nameMaker = settings.debug ? NameMakerFactory.CreateDebugNameMaker() : NameMakerFactory.CreateNameMakerBaseASCIICharSet(); _nameMaker = settings.debug ? NameMakerFactory.CreateDebugNameMaker() : NameMakerFactory.CreateNameMakerBaseASCIICharSet(settings.obfuscatedNamePrefix);
} }
public void Init(ObfuscationPassContext ctx) public void Init(ObfuscationPassContext ctx)

View File

@ -12,6 +12,8 @@ namespace Obfuz.Settings
{ {
public bool debug; public bool debug;
public string obfuscatedNamePrefix = "$";
[Tooltip("path of mapping.xml")] [Tooltip("path of mapping.xml")]
public string mappingFile = "Assets/Obfuz/SymbolObfus/mapping.xml"; public string mappingFile = "Assets/Obfuz/SymbolObfus/mapping.xml";