rename TypeDef
parent
177896026e
commit
e260319bba
|
@ -13,6 +13,8 @@ namespace Obfuz.Rename
|
|||
|
||||
string GetNewName(TypeDef typeDef, string originalName);
|
||||
|
||||
string GetNewNamespace(TypeDef typeDef, string originalNamespace);
|
||||
|
||||
string GetNewName(MethodDef methodDef, string originalName);
|
||||
|
||||
string GetNewName(FieldDef fieldDef, string originalName);
|
||||
|
@ -34,6 +36,11 @@ namespace Obfuz.Rename
|
|||
return GetDefaultNewName(originalName);
|
||||
}
|
||||
|
||||
public string GetNewNamespace(TypeDef typeDef, string originalNamespace)
|
||||
{
|
||||
return GetDefaultNewName(originalNamespace);
|
||||
}
|
||||
|
||||
public string GetNewName(TypeDef typeDef, string originalName)
|
||||
{
|
||||
return GetDefaultNewName(originalName);
|
||||
|
|
|
@ -26,7 +26,7 @@ namespace Obfuz.Rename
|
|||
{
|
||||
public bool NeedRename(ModuleDefMD mod)
|
||||
{
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool NeedRename(TypeDef typeDef)
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace Obfuz
|
|||
}
|
||||
foreach (TypeDef type in ass.module.GetTypes())
|
||||
{
|
||||
if (type.FullName != "<Module>" && _renamePolicy.NeedRename(type))
|
||||
if (!IsSystemReservedType(type) && _renamePolicy.NeedRename(type))
|
||||
{
|
||||
Rename(type);
|
||||
}
|
||||
|
@ -71,6 +71,15 @@ namespace Obfuz
|
|||
}
|
||||
}
|
||||
|
||||
private bool IsSystemReservedType(TypeDef type)
|
||||
{
|
||||
if (type.FullName == "<Module>")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private List<ObfuzAssemblyInfo> GetReferenceMeAssemblies(ModuleDefMD mod)
|
||||
{
|
||||
return _ctx.assemblies.Find(ass => ass.module == mod).referenceMeAssemblies;
|
||||
|
@ -97,6 +106,46 @@ namespace Obfuz
|
|||
|
||||
private void Rename(TypeDef type)
|
||||
{
|
||||
string moduleName = MetaUtil.GetModuleNameWithoutExt(type.Module.Name);
|
||||
string oldFullName = type.FullName;
|
||||
string oldNamespace = type.Namespace;
|
||||
string newNamespace;
|
||||
if (string.IsNullOrEmpty(oldNamespace))
|
||||
{
|
||||
newNamespace = oldNamespace;
|
||||
}
|
||||
else
|
||||
{
|
||||
newNamespace = _ctx.nameMaker.GetNewNamespace(type, oldNamespace);
|
||||
type.Namespace = newNamespace;
|
||||
}
|
||||
|
||||
string oldName = type.Name;
|
||||
string newName = _ctx.nameMaker.GetNewName(type, oldName);
|
||||
type.Name = newName;
|
||||
string newFullName = type.FullName;
|
||||
Debug.Log($"rename typedef. assembly:{type.Module.Name} oldName:{oldFullName} => newName:{newFullName}");
|
||||
|
||||
foreach (ObfuzAssemblyInfo ass in GetReferenceMeAssemblies((ModuleDefMD)type.Module))
|
||||
{
|
||||
foreach (TypeRef typeRef in ass.module.GetTypeRefs())
|
||||
{
|
||||
if (typeRef.FullName != oldFullName)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (typeRef.DefinitionAssembly.Name != moduleName)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!string.IsNullOrEmpty(oldNamespace))
|
||||
{
|
||||
typeRef.Namespace = newNamespace;
|
||||
}
|
||||
typeRef.Name = newName;
|
||||
Debug.Log($"rename assembly:{typeRef.DefinitionAssembly.Name} reference {oldFullName} => {typeRef.FullName}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Rename(FieldDef field)
|
||||
|
|
Loading…
Reference in New Issue