支持rename property和event

backup
walon 2025-04-07 09:02:43 +08:00
parent 53681bd14a
commit bb9d784090
2 changed files with 21 additions and 8 deletions

View File

@ -17,6 +17,8 @@ namespace Obfuz.Rename
string GetNewName(MethodDef methodDef, string originalName); string GetNewName(MethodDef methodDef, string originalName);
string GetNewName(ParamDef param, string originalName);
string GetNewName(FieldDef fieldDef, string originalName); string GetNewName(FieldDef fieldDef, string originalName);
string GetNewName(PropertyDef propertyDef, string originalName); string GetNewName(PropertyDef propertyDef, string originalName);
@ -51,6 +53,11 @@ namespace Obfuz.Rename
return GetDefaultNewName(originalName); return GetDefaultNewName(originalName);
} }
public string GetNewName(ParamDef param, string originalName)
{
return GetDefaultNewName(originalName);
}
public string GetNewName(FieldDef fieldDef, string originalName) public string GetNewName(FieldDef fieldDef, string originalName)
{ {
return GetDefaultNewName(originalName); return GetDefaultNewName(originalName);

View File

@ -14,11 +14,13 @@ namespace Obfuz
private readonly ObfuscatorContext _ctx; private readonly ObfuscatorContext _ctx;
private readonly IRenamePolicy _renamePolicy; private readonly IRenamePolicy _renamePolicy;
private readonly INameMaker _nameMaker;
public SymbolRename(ObfuscatorContext ctx) public SymbolRename(ObfuscatorContext ctx)
{ {
_ctx = ctx; _ctx = ctx;
_renamePolicy = new RenamePolicy(); _renamePolicy = ctx.renamePolicy;
_nameMaker = ctx.nameMaker;
} }
public void Process() public void Process()
@ -48,11 +50,14 @@ namespace Obfuz
{ {
Rename(method); Rename(method);
foreach (Parameter param in method.Parameters) foreach (Parameter param in method.Parameters)
{
if (param.ParamDef != null)
{ {
Rename(param.ParamDef); Rename(param.ParamDef);
} }
} }
} }
}
foreach (EventDef eventDef in type.Events) foreach (EventDef eventDef in type.Events)
{ {
if (_renamePolicy.NeedRename(eventDef)) if (_renamePolicy.NeedRename(eventDef))
@ -88,7 +93,7 @@ namespace Obfuz
private void Rename(ModuleDefMD mod) private void Rename(ModuleDefMD mod)
{ {
string oldName = MetaUtil.GetModuleNameWithoutExt(mod.Name); string oldName = MetaUtil.GetModuleNameWithoutExt(mod.Name);
string newName = _ctx.nameMaker.GetNewName(mod, oldName); string newName = _nameMaker.GetNewName(mod, oldName);
mod.Name = $"{newName}.dll"; mod.Name = $"{newName}.dll";
Debug.Log($"rename module. oldName:{oldName} newName:{newName}"); Debug.Log($"rename module. oldName:{oldName} newName:{newName}");
foreach (ObfuzAssemblyInfo ass in GetReferenceMeAssemblies(mod)) foreach (ObfuzAssemblyInfo ass in GetReferenceMeAssemblies(mod))
@ -116,12 +121,12 @@ namespace Obfuz
} }
else else
{ {
newNamespace = _ctx.nameMaker.GetNewNamespace(type, oldNamespace); newNamespace = _nameMaker.GetNewNamespace(type, oldNamespace);
type.Namespace = newNamespace; type.Namespace = newNamespace;
} }
string oldName = type.Name; string oldName = type.Name;
string newName = _ctx.nameMaker.GetNewName(type, oldName); string newName = _nameMaker.GetNewName(type, oldName);
type.Name = newName; type.Name = newName;
string newFullName = type.FullName; string newFullName = type.FullName;
Debug.Log($"rename typedef. assembly:{type.Module.Name} oldName:{oldFullName} => newName:{newFullName}"); Debug.Log($"rename typedef. assembly:{type.Module.Name} oldName:{oldFullName} => newName:{newFullName}");
@ -151,7 +156,7 @@ namespace Obfuz
private void Rename(FieldDef field) private void Rename(FieldDef field)
{ {
string oldName = field.Name; string oldName = field.Name;
string newName = _ctx.nameMaker.GetNewName(field, oldName); string newName = _nameMaker.GetNewName(field, oldName);
foreach (ObfuzAssemblyInfo ass in GetReferenceMeAssemblies(field.DeclaringType.Module)) foreach (ObfuzAssemblyInfo ass in GetReferenceMeAssemblies(field.DeclaringType.Module))
{ {
foreach (MemberRef memberRef in ass.module.GetMemberRefs()) foreach (MemberRef memberRef in ass.module.GetMemberRefs())
@ -211,16 +216,17 @@ namespace Obfuz
private void Rename(ParamDef param) private void Rename(ParamDef param)
{ {
param.Name = _nameMaker.GetNewName(param, param.Name);
} }
private void Rename(EventDef eventDef) private void Rename(EventDef eventDef)
{ {
eventDef.Name = _nameMaker.GetNewName(eventDef, eventDef.Name);
} }
private void Rename(PropertyDef property) private void Rename(PropertyDef property)
{ {
property.Name = _nameMaker.GetNewName(property, property.Name);
} }
} }
} }