Fix pointer extraction for MSVC in metadata <21.
This change causes the Inspector to properly parse DLLs generated with Il2Cpp versions 5.3.0f4 through 5.3.4f1 (excluding 5.3.2f1, which is a separate problem).
This commit is contained in:
@@ -214,7 +214,7 @@ namespace Il2CppInspector
|
|||||||
offset = nextLea?.foundOffset + leaSize ?? buff2Size;
|
offset = nextLea?.foundOffset + leaSize ?? buff2Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (leas.Count == 3) {
|
if ((image.Version < 21 && leas.Count == 2) || (image.Version >= 21 && leas.Count == 3)) {
|
||||||
// Register-based argument passing?
|
// Register-based argument passing?
|
||||||
var leaRSI = leas.FirstOrDefault(l => l.Value == RSI).Key.address;
|
var leaRSI = leas.FirstOrDefault(l => l.Value == RSI).Key.address;
|
||||||
var leaRDI = leas.FirstOrDefault(l => l.Value == RDI).Key.address;
|
var leaRDI = leas.FirstOrDefault(l => l.Value == RDI).Key.address;
|
||||||
|
|||||||
@@ -32,10 +32,17 @@ namespace Il2CppInspector
|
|||||||
return (0, 0);
|
return (0, 0);
|
||||||
|
|
||||||
// Jump to Il2CppCodegenRegistration
|
// Jump to Il2CppCodegenRegistration
|
||||||
|
if(image.Version < 21) {
|
||||||
|
image.Position = image.MapVATR((ulong)pCgr + 1);
|
||||||
|
metadata = image.ReadUInt32();
|
||||||
|
image.Position = image.MapVATR((ulong)pCgr + 6);
|
||||||
|
code = image.ReadUInt32();
|
||||||
|
} else {
|
||||||
image.Position = image.MapVATR((ulong)pCgr + 6);
|
image.Position = image.MapVATR((ulong)pCgr + 6);
|
||||||
metadata = image.ReadUInt32();
|
metadata = image.ReadUInt32();
|
||||||
image.Position = image.MapVATR((ulong)pCgr + 11);
|
image.Position = image.MapVATR((ulong)pCgr + 11);
|
||||||
code = image.ReadUInt32();
|
code = image.ReadUInt32();
|
||||||
|
}
|
||||||
return (code, metadata);
|
return (code, metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user