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;
|
||||
}
|
||||
|
||||
if (leas.Count == 3) {
|
||||
if ((image.Version < 21 && leas.Count == 2) || (image.Version >= 21 && 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;
|
||||
|
||||
@@ -32,10 +32,17 @@ namespace Il2CppInspector
|
||||
return (0, 0);
|
||||
|
||||
// Jump to Il2CppCodegenRegistration
|
||||
image.Position = image.MapVATR((ulong) pCgr + 6);
|
||||
metadata = image.ReadUInt32();
|
||||
image.Position = image.MapVATR((ulong) pCgr + 11);
|
||||
code = image.ReadUInt32();
|
||||
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);
|
||||
metadata = image.ReadUInt32();
|
||||
image.Position = image.MapVATR((ulong)pCgr + 11);
|
||||
code = image.ReadUInt32();
|
||||
}
|
||||
return (code, metadata);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user