migrate versioning to StructVersion class, add handling/detection for 29.2/31.2
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
using Il2CppInspector.Next;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -342,10 +343,10 @@ namespace Il2CppInspector
|
||||
// In v21 and later, R0-R2 + PC will be set and they will be the only registers set
|
||||
// Pre-v21, R0-R1 + PC will be the only registers set
|
||||
|
||||
if (image.Version >= 21 && regs.Count == 4 && regs.TryGetValue(0, out r0) && regs.TryGetValue(1, out r1) && regs.TryGetValue(2, out uint _))
|
||||
if (image.Version >= MetadataVersions.V210 && regs.Count == 4 && regs.TryGetValue(0, out r0) && regs.TryGetValue(1, out r1) && regs.TryGetValue(2, out uint _))
|
||||
return (r0 & 0xffff_fffe, r1 & 0xffff_fffe);
|
||||
|
||||
if (image.Version < 21 && regs.Count == 3 && regs.TryGetValue(0, out r0) && regs.TryGetValue(1, out r1))
|
||||
if (image.Version < MetadataVersions.V210 && regs.Count == 3 && regs.TryGetValue(0, out r0) && regs.TryGetValue(1, out r1))
|
||||
return (r0 & 0xffff_fffe, r1 & 0xffff_fffe);
|
||||
|
||||
return (0, 0);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
using Il2CppInspector.Next;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
@@ -168,10 +169,10 @@ namespace Il2CppInspector
|
||||
// Is it Il2CppCodegenRegistration(void)?
|
||||
// In v21 and later, X0-X2 will be set and they will be the only registers set
|
||||
// Pre-v21, X0-X1 will be the only registers set
|
||||
if (image.Version >= 21 && regs.Count == 3 && regs.TryGetValue(0, out ulong x0) && regs.TryGetValue(1, out x1) && regs.TryGetValue(2, out ulong _))
|
||||
if (image.Version >= MetadataVersions.V210 && regs.Count == 3 && regs.TryGetValue(0, out ulong x0) && regs.TryGetValue(1, out x1) && regs.TryGetValue(2, out ulong _))
|
||||
return (x0, x1);
|
||||
|
||||
if (image.Version < 21 && regs.Count == 2 && regs.TryGetValue(0, out x0) && regs.TryGetValue(1, out x1))
|
||||
if (image.Version < MetadataVersions.V210 && regs.Count == 2 && regs.TryGetValue(0, out x0) && regs.TryGetValue(1, out x1))
|
||||
return (x0, x1);
|
||||
|
||||
return (0, 0);
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
using Il2CppInspector.Next;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
@@ -216,7 +217,7 @@ namespace Il2CppInspector
|
||||
offset = nextLea?.foundOffset + leaSize ?? buff2Size;
|
||||
}
|
||||
|
||||
if ((image.Version < 21 && leas.Count == 2) || (image.Version >= 21 && leas.Count == 3)) {
|
||||
if ((image.Version < MetadataVersions.V210 && leas.Count == 2) || (image.Version >= MetadataVersions.V210 && leas.Count == 3)) {
|
||||
// Register-based argument passing?
|
||||
var leaRSI = leas.FirstOrDefault(l => l.Value == RSI).Key.address;
|
||||
var leaRDI = leas.FirstOrDefault(l => l.Value == RDI).Key.address;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
using Il2CppInspector.Next;
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
@@ -34,7 +35,7 @@ namespace Il2CppInspector
|
||||
return (0, 0);
|
||||
|
||||
// Jump to Il2CppCodegenRegistration
|
||||
if(image.Version < 21) {
|
||||
if(image.Version < MetadataVersions.V210) {
|
||||
image.Position = image.MapVATR((ulong)pCgr + 1);
|
||||
metadata = image.ReadUInt32();
|
||||
image.Position = image.MapVATR((ulong)pCgr + 6);
|
||||
|
||||
Reference in New Issue
Block a user