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<ModuleDef, RenameRecord> _modRenames = new Dictionary<ModuleDef, RenameRecord>();
|
||||||
private readonly Dictionary<TypeDef, RenameRecord> _typeRenames = new Dictionary<TypeDef, RenameRecord>();
|
private readonly Dictionary<TypeDef, RenameRecord> _typeRenames = new Dictionary<TypeDef, RenameRecord>();
|
||||||
private readonly Dictionary<MethodDef, RenameRecord> _methodRenames = new Dictionary<MethodDef, 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<FieldDef, RenameRecord> _fieldRenames = new Dictionary<FieldDef, RenameRecord>();
|
||||||
private readonly Dictionary<PropertyDef, RenameRecord> _propertyRenames = new Dictionary<PropertyDef, RenameRecord>();
|
private readonly Dictionary<PropertyDef, RenameRecord> _propertyRenames = new Dictionary<PropertyDef, RenameRecord>();
|
||||||
private readonly Dictionary<EventDef, RenameRecord> _eventRenames = new Dictionary<EventDef, RenameRecord>();
|
private readonly Dictionary<EventDef, RenameRecord> _eventRenames = new Dictionary<EventDef, RenameRecord>();
|
||||||
|
@ -147,7 +146,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
||||||
{
|
{
|
||||||
nameMaker.AddPreservedName(method, method.Name);
|
nameMaker.AddPreservedName(method, method.Name);
|
||||||
string methodSig = TypeSigUtil.ComputeMethodDefSignature(method);
|
string methodSig = TypeSigUtil.ComputeMethodDefSignature(method);
|
||||||
nameMaker.AddPreservedName(method, method.Name);
|
|
||||||
|
|
||||||
RenameMappingMethod rmm = rmt?.methods.GetValueOrDefault(methodSig);
|
RenameMappingMethod rmm = rmt?.methods.GetValueOrDefault(methodSig);
|
||||||
if (rmm != null)
|
if (rmm != null)
|
||||||
|
@ -163,19 +161,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
||||||
renameMappingData = rmm,
|
renameMappingData = rmm,
|
||||||
oldStackTraceSignature = MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method),
|
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)
|
foreach (FieldDef field in type.Fields)
|
||||||
{
|
{
|
||||||
|
@ -550,13 +535,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
||||||
methodNode.SetAttribute("oldStackTraceSignature", record.oldStackTraceSignature);
|
methodNode.SetAttribute("oldStackTraceSignature", record.oldStackTraceSignature);
|
||||||
methodNode.SetAttribute("newStackTraceSignature", MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method));
|
methodNode.SetAttribute("newStackTraceSignature", MetaUtil.CreateMethodDefIl2CppStackTraceSignature(method));
|
||||||
//methodNode.SetAttribute("status", record != null ? record.status.ToString() : RenameStatus.NotRenamed.ToString());
|
//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);
|
typeEle.AppendChild(methodNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -568,19 +546,6 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
||||||
typeEle.AppendChild(methodNode);
|
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)
|
public void AddRename(ModuleDef mod, string newName)
|
||||||
{
|
{
|
||||||
RenameRecord record = _modRenames[mod];
|
RenameRecord record = _modRenames[mod];
|
||||||
|
@ -597,9 +562,25 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
||||||
|
|
||||||
public void AddRename(MethodDef method, string newName)
|
public void AddRename(MethodDef method, string newName)
|
||||||
{
|
{
|
||||||
RenameRecord record = _methodRenames[method];
|
if (_methodRenames.TryGetValue(method, out RenameRecord record))
|
||||||
record.status = RenameStatus.Renamed;
|
{
|
||||||
record.newName = newName;
|
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)
|
public void InitAndAddRename(VirtualMethodGroup methodGroup, string newName)
|
||||||
|
|
|
@ -475,7 +475,7 @@ namespace Obfuz.ObfusPasses.SymbolObfus
|
||||||
VirtualMethodGroup group = _virtualMethodGroupCalculator.GetMethodGroup(method);
|
VirtualMethodGroup group = _virtualMethodGroupCalculator.GetMethodGroup(method);
|
||||||
if (!groupNeedRenames.TryGetValue(group, out var needRename))
|
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);
|
groupNeedRenames.Add(group, needRename);
|
||||||
if (needRename)
|
if (needRename)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue