backport 29/31 version fixes from new versioning branch

This commit is contained in:
LukeFZ
2024-08-18 23:20:49 +02:00
parent 665e70324f
commit 4ce4d0e799
3 changed files with 22 additions and 3 deletions

View File

@@ -294,9 +294,9 @@ namespace Il2CppInspector
CodeRegistration = Image.ReadMappedObject<Il2CppCodeRegistration>(codeRegistration); CodeRegistration = Image.ReadMappedObject<Il2CppCodeRegistration>(codeRegistration);
} }
if (Image.Version == 29 && (long)CodeRegistration.genericMethodPointersCount - MetadataRegistration.genericMethodTableCount > 0x10000) if (Image.Version is 29 or 31 && (long)CodeRegistration.genericMethodPointersCount - MetadataRegistration.genericMethodTableCount > 0x10000)
{ {
Image.Version = 29.1; Image.Version += 0.1;
codeRegistration -= 2 * pointerSize; codeRegistration -= 2 * pointerSize;
CodeRegistration = Image.ReadMappedObject<Il2CppCodeRegistration>(codeRegistration); CodeRegistration = Image.ReadMappedObject<Il2CppCodeRegistration>(codeRegistration);
} }

View File

@@ -191,6 +191,25 @@ namespace Il2CppInspector
Header.attributeDataRangeSize / Sizeof(typeof(Il2CppCustomAttributeDataRange))); Header.attributeDataRangeSize / Sizeof(typeof(Il2CppCustomAttributeDataRange)));
} }
if (Version is 29 or 31)
{
// 29.2/31.2 added a new isUnmanagedCallersOnly flag to Il2CppMethodDefinition.
// This offsets all subsequent entries by one - we can detect this by checking the
// top token byte (which should always be 0x06).
if (Methods.Length >= 2)
{
var secondToken = Methods[1].token;
if (secondToken >> 24 != 0x6)
{
Version += 0.2;
Methods = ReadArray<Il2CppMethodDefinition>(Header.methodsOffset,
Header.methodsCount / Sizeof(typeof(Il2CppMethodDefinition)));
}
}
}
// Get all metadata strings // Get all metadata strings
var pluginGetStringsResult = PluginHooks.GetStrings(this); var pluginGetStringsResult = PluginHooks.GetStrings(this);
if (pluginGetStringsResult.IsDataModified && !pluginGetStringsResult.IsInvalid) if (pluginGetStringsResult.IsDataModified && !pluginGetStringsResult.IsInvalid)

View File

@@ -343,7 +343,7 @@ namespace Il2CppInspector
public ushort parameterCount; public ushort parameterCount;
[Version(Min = 29.2, Max = 31)] [Version(Min = 29.2, Max = 31)]
public bool isUnmanagedCallersOnly; public byte isUnmanagedCallersOnly;
} }
public class Il2CppParameterDefinition public class Il2CppParameterDefinition