AppModel/IDA: Typed MethodInvokers for 5.3.0-5.6.7 don't use Il2CppMethodPointer
This commit is contained in:
@@ -110,7 +110,7 @@ typedef __int64 int64_t;
|
||||
|
||||
writeSectionHeader("Method.Invoke thunks");
|
||||
foreach (var method in model.ILModel.MethodInvokers.Where(m => m != null)) {
|
||||
writeTypedName(method.VirtualAddress.Start, method.Signature, method.Name);
|
||||
writeTypedName(method.VirtualAddress.Start, method.GetSignature(model.UnityVersion), method.Name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Il2CppInspector.Cpp.UnityHeaders;
|
||||
|
||||
namespace Il2CppInspector.Reflection
|
||||
{
|
||||
@@ -56,8 +57,11 @@ namespace Il2CppInspector.Reflection
|
||||
public string Name => $"RuntimeInvoker_{!IsStatic}{ReturnType.BaseName.ToCIdentifier()}_" + string.Join("_", ParameterTypes.Select(p => p.BaseName.ToCIdentifier()));
|
||||
|
||||
// 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 string GetSignature(UnityVersion version) =>
|
||||
version.CompareTo("2017.1.0") >= 0
|
||||
? $"void* {Name}(Il2CppMethodPointer pointer, const MethodInfo* methodMetadata, void* obj, void** args)"
|
||||
: $"void* {Name}(const MethodInfo* method, void* obj, void** args)";
|
||||
|
||||
public override string ToString() => Signature;
|
||||
public override string ToString() => GetSignature(new UnityVersion("2017.1.0"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user