fix: 修复非混淆的程序集中虚函数override混淆程序集中函数,当基类虚函数名被混淆后没有同步修改非混淆程序集中override函数名的bug
remove: 删除 RenameRecordMap中维护parameter映射的代码before-split
parent
4d8737f01c
commit
f5b45a0543
|
@ -92,7 +92,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
private readonly Dictionary<ModuleDef, RenameRecord> _modRenames = new Dictionary<ModuleDef, RenameRecord>();
|
||||
private readonly Dictionary<TypeDef, RenameRecord> _typeRenames = new Dictionary<TypeDef, RenameRecord>();
|
||||
private readonly Dictionary<MethodDef, RenameRecord> _methodRenames = new Dictionary<MethodDef, RenameRecord>();
|
||||
private readonly Dictionary<ParamDef, RenameRecord> _paramRenames = new Dictionary<ParamDef, RenameRecord>();
|
||||
private readonly Dictionary<FieldDef, RenameRecord> _fieldRenames = new Dictionary<FieldDef, RenameRecord>();
|
||||
private readonly Dictionary<PropertyDef, RenameRecord> _propertyRenames = new Dictionary<PropertyDef, RenameRecord>();
|
||||
private readonly Dictionary<EventDef, RenameRecord> _eventRenames = new Dictionary<EventDef, RenameRecord>();
|
||||
|
@ -147,7 +146,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
{
|
||||
nameMaker.AddPreservedName(method, method.Name);
|
||||
string methodSig = TypeSigUtil.ComputeMethodDefSignature(method);
|
||||
nameMaker.AddPreservedName(method, method.Name);
|
||||
|
||||
RenameMappingMethod rmm = rmt?.methods.GetValueOrDefault(methodSig);
|
||||
if (rmm != null)
|
||||
|
@ -163,19 +161,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
renameMappingData = rmm,
|
||||
oldStackTraceSignature = MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method),
|
||||
});
|
||||
foreach (Parameter param in method.Parameters)
|
||||
{
|
||||
if (param.ParamDef != null)
|
||||
{
|
||||
_paramRenames.Add(param.ParamDef, new RenameRecord
|
||||
{
|
||||
status = RenameStatus.NotRenamed,
|
||||
signature = param.Name,
|
||||
oldName = param.Name,
|
||||
newName = null,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (FieldDef field in type.Fields)
|
||||
{
|
||||
|
@ -550,13 +535,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
methodNode.SetAttribute("oldStackTraceSignature", record.oldStackTraceSignature);
|
||||
methodNode.SetAttribute("newStackTraceSignature", MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method));
|
||||
//methodNode.SetAttribute("status", record != null ? record.status.ToString() : RenameStatus.NotRenamed.ToString());
|
||||
foreach (Parameter param in method.Parameters)
|
||||
{
|
||||
if (param.ParamDef != null)
|
||||
{
|
||||
WriteMethodParamMapping(methodNode, param.ParamDef);
|
||||
}
|
||||
}
|
||||
typeEle.AppendChild(methodNode);
|
||||
}
|
||||
|
||||
|
@ -568,19 +546,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
typeEle.AppendChild(methodNode);
|
||||
}
|
||||
|
||||
private void WriteMethodParamMapping(XmlElement methodEle, ParamDef param)
|
||||
{
|
||||
if (!_paramRenames.TryGetValue(param, out var record) || record.status == RenameStatus.NotRenamed)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var paramNode = methodEle.OwnerDocument.CreateElement("param");
|
||||
paramNode.SetAttribute("index", param.Sequence.ToString());
|
||||
paramNode.SetAttribute("newName", record.newName);
|
||||
//paramNode.SetAttribute("status", record.status.ToString());
|
||||
methodEle.AppendChild(paramNode);
|
||||
}
|
||||
|
||||
public void AddRename(ModuleDef mod, string newName)
|
||||
{
|
||||
RenameRecord record = _modRenames[mod];
|
||||
|
@ -597,9 +562,25 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
|
||||
public void AddRename(MethodDef method, string newName)
|
||||
{
|
||||
RenameRecord record = _methodRenames[method];
|
||||
record.status = RenameStatus.Renamed;
|
||||
record.newName = newName;
|
||||
if (_methodRenames.TryGetValue(method, out RenameRecord record))
|
||||
{
|
||||
record.status = RenameStatus.Renamed;
|
||||
record.newName = newName;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
string methodSig = TypeSigUtil.ComputeMethodDefSignature(method);
|
||||
_methodRenames.Add(method, new RenameRecord
|
||||
{
|
||||
status = RenameStatus.Renamed,
|
||||
signature = methodSig,
|
||||
oldName = method.Name,
|
||||
newName = newName,
|
||||
renameMappingData = null,
|
||||
oldStackTraceSignature = MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void InitAndAddRename(VirtualMethodGroup methodGroup, string newName)
|
||||
|
|
|
@ -475,7 +475,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
|||
VirtualMethodGroup group = _virtualMethodGroupCalculator.GetMethodGroup(method);
|
||||
if (!groupNeedRenames.TryGetValue(group, out var needRename))
|
||||
{
|
||||
needRename = group.methods.All(m => _toObfuscatedModuleSet.Contains(m.DeclaringType.Module) && _renamePolicy.NeedRename(m));
|
||||
needRename = group.methods.All(m => _obfuscatedAndNotObfuscatedModules.Contains(m.Module) && (!_toObfuscatedModuleSet.Contains(m.DeclaringType.Module) || _renamePolicy.NeedRename(m)));
|
||||
groupNeedRenames.Add(group, needRename);
|
||||
if (needRename)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue