修复RenameMethod未处理MethodImpl的bug

before-split
walon 2025-05-23 23:06:18 +08:00
parent 647619943f
commit 48f1dfe64a
1 changed files with 31 additions and 22 deletions

View File

@ -399,6 +399,8 @@ namespace Obfuz.ObfusPasses.SymbolObfus
}
}
private void BuildRefMethodMetasMap(Dictionary<MethodDef, RefMethodMetas> refMethodMetasMap)
{
foreach (ModuleDef mod in _obfuscatedAndNotObfuscatedModules)
@ -417,6 +419,35 @@ namespace Obfuz.ObfusPasses.SymbolObfus
}
}
}
foreach (var type in mod.GetTypes())
{
foreach (MethodDef method in type.Methods)
{
if (method.HasOverrides)
{
foreach (MethodOverride methodOverride in method.Overrides)
{
if (methodOverride.MethodDeclaration is MemberRef memberRef)
{
RenameMethodRef(memberRef, refMethodMetasMap);
}
else
{
Assert.IsTrue(methodOverride.MethodDeclaration is MethodDef);
}
if (methodOverride.MethodBody is MemberRef memberRef2)
{
RenameMethodRef(memberRef2, refMethodMetasMap);
}
else
{
Assert.IsTrue(methodOverride.MethodBody is MethodDef);
}
}
}
}
}
}
}
@ -617,28 +648,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
Debug.Log("Rename events begin");
}
//private void Rename(ModuleDef mod)
//{
// string oldName = mod.Assembly.Name;
// string newName = _renameRecordMap.TryGetExistRenameMapping(mod, out var n) ? n : _nameMaker.GetNewName(mod, oldName);
// _renameRecordMap.AddRename(mod, newName);
// mod.Assembly.Name = newName;
// mod.Name = $"{newName}.dll";
// //Debug.Log($"rename module. oldName:{oldName} newName:{newName}");
// foreach (AssemblyReferenceInfo ass in GetReferenceMeAssemblies(mod))
// {
// foreach (AssemblyRef assRef in ass.module.GetAssemblyRefs())
// {
// if (assRef.Name == oldName)
// {
// _renameRecordMap.AddRename(mod, newName);
// assRef.Name = newName;
// // Debug.Log($"rename assembly:{ass.name} ref oldName:{oldName} newName:{newName}");
// }
// }
// }
//}
private void Rename(TypeDef type, RefTypeDefMetas refTypeDefMeta)
{
string moduleName = MetaUtil.GetModuleNameWithoutExt(type.Module.Name);