rename TypeDef
parent
177896026e
commit
e260319bba
|
@ -13,6 +13,8 @@ namespace Obfuz.Rename
|
||||||
|
|
||||||
string GetNewName(TypeDef typeDef, string originalName);
|
string GetNewName(TypeDef typeDef, string originalName);
|
||||||
|
|
||||||
|
string GetNewNamespace(TypeDef typeDef, string originalNamespace);
|
||||||
|
|
||||||
string GetNewName(MethodDef methodDef, string originalName);
|
string GetNewName(MethodDef methodDef, string originalName);
|
||||||
|
|
||||||
string GetNewName(FieldDef fieldDef, string originalName);
|
string GetNewName(FieldDef fieldDef, string originalName);
|
||||||
|
@ -34,6 +36,11 @@ namespace Obfuz.Rename
|
||||||
return GetDefaultNewName(originalName);
|
return GetDefaultNewName(originalName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetNewNamespace(TypeDef typeDef, string originalNamespace)
|
||||||
|
{
|
||||||
|
return GetDefaultNewName(originalNamespace);
|
||||||
|
}
|
||||||
|
|
||||||
public string GetNewName(TypeDef typeDef, string originalName)
|
public string GetNewName(TypeDef typeDef, string originalName)
|
||||||
{
|
{
|
||||||
return GetDefaultNewName(originalName);
|
return GetDefaultNewName(originalName);
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace Obfuz.Rename
|
||||||
{
|
{
|
||||||
public bool NeedRename(ModuleDefMD mod)
|
public bool NeedRename(ModuleDefMD mod)
|
||||||
{
|
{
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool NeedRename(TypeDef typeDef)
|
public bool NeedRename(TypeDef typeDef)
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace Obfuz
|
||||||
}
|
}
|
||||||
foreach (TypeDef type in ass.module.GetTypes())
|
foreach (TypeDef type in ass.module.GetTypes())
|
||||||
{
|
{
|
||||||
if (type.FullName != "<Module>" && _renamePolicy.NeedRename(type))
|
if (!IsSystemReservedType(type) && _renamePolicy.NeedRename(type))
|
||||||
{
|
{
|
||||||
Rename(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)
|
private List<ObfuzAssemblyInfo> GetReferenceMeAssemblies(ModuleDefMD mod)
|
||||||
{
|
{
|
||||||
return _ctx.assemblies.Find(ass => ass.module == mod).referenceMeAssemblies;
|
return _ctx.assemblies.Find(ass => ass.module == mod).referenceMeAssemblies;
|
||||||
|
@ -97,6 +106,46 @@ namespace Obfuz
|
||||||
|
|
||||||
private void Rename(TypeDef type)
|
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)
|
private void Rename(FieldDef field)
|
||||||
|
|
Loading…
Reference in New Issue