IL2CPP: Handle method invoker pointers and indices
This commit is contained in:
@@ -59,6 +59,7 @@ namespace Il2CppInspector
|
||||
public List<Il2CppGenericInst> GenericInstances => Binary.GenericInstances;
|
||||
public Dictionary<string, Il2CppCodeGenModule> Modules => Binary.Modules;
|
||||
public ulong[] CustomAttributeGenerators => Binary.CustomAttributeGenerators;
|
||||
public ulong[] MethodInvokePointers => Binary.MethodInvokePointers;
|
||||
public Il2CppMethodSpec[] MethodSpecs => Binary.MethodSpecs;
|
||||
public Dictionary<Il2CppMethodSpec, ulong> GenericMethodPointers => Binary.GenericMethodPointers;
|
||||
|
||||
@@ -202,6 +203,7 @@ namespace Il2CppInspector
|
||||
Binary.ModuleMethodPointers.SelectMany(module => module.Value).ToList();
|
||||
|
||||
sortedFunctionPointers.AddRange(CustomAttributeGenerators);
|
||||
sortedFunctionPointers.AddRange(MethodInvokePointers);
|
||||
sortedFunctionPointers.AddRange(GenericMethodPointers.Values);
|
||||
sortedFunctionPointers.Sort();
|
||||
sortedFunctionPointers = sortedFunctionPointers.Distinct().ToList();
|
||||
@@ -279,6 +281,17 @@ namespace Il2CppInspector
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get a method invoker index from a method definition
|
||||
public int GetInvokerIndex(Il2CppCodeGenModule module, Il2CppMethodDefinition methodDef) {
|
||||
if (Version <= 24.1) {
|
||||
return methodDef.invokerIndex;
|
||||
}
|
||||
|
||||
// Version >= 24.2
|
||||
var methodInModule = (methodDef.token & 0xffffff);
|
||||
return Binary.MethodInvokerIndices[module][methodInModule - 1];
|
||||
}
|
||||
|
||||
public static List<Il2CppInspector> LoadFromFile(string codeFile, string metadataFile) {
|
||||
// Load the metadata file
|
||||
Metadata metadata;
|
||||
|
||||
Reference in New Issue
Block a user