IDA: Produced typed RuntimeInvoker methods

This commit is contained in:
Katy Coe
2020-07-17 04:29:38 +02:00
parent fc313de0b2
commit d1501db903
2 changed files with 4 additions and 6 deletions

View File

@@ -108,9 +108,7 @@ typedef __int64 int64_t;
writeSectionHeader("Method.Invoke thunks");
foreach (var method in model.ILModel.MethodInvokers.Where(m => m != null)) {
var address = method.VirtualAddress.Start;
writeName(address, method.Name);
writeComment(address, method);
writeTypedName(method.VirtualAddress.Start, method.ToString(), method.Name);
}
}

View File

@@ -53,10 +53,10 @@ namespace Il2CppInspector.Reflection
_ => type
};
public string Name => $"RunTimeInvoker_{!IsStatic}{ReturnType.BaseName}_" + string.Join("_", ParameterTypes.Select(p => p.BaseName));
public string Name => $"RuntimeInvoker_{!IsStatic}{ReturnType.BaseName.ToCIdentifier()}_" + string.Join("_", ParameterTypes.Select(p => p.BaseName.ToCIdentifier()));
// Display as a C++ method signature
public string Signature => Name + "(Il2CppMethodPointer pointer, const RuntimeMethod* methodMetadata, void* obj, void** args)";
// Display as a C++ method signature; MethodInfo* is the same as RuntimeMethod* (see codegen/il2cpp-codegen-metadata.h)
public string Signature => $"void* {Name}(Il2CppMethodPointer pointer, const MethodInfo* methodMetadata, void* obj, void** args)";
public override string ToString() => Signature;
}