Skip to content

Commit 4e6132e

Browse files
committed
Fix issue finding GetFieldDefaultValue on 2021.3.23
1 parent 18e58ef commit 4e6132e

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

Il2CppInterop.Runtime/Injection/Hooks/Class_GetFieldDefaultValue_Hook.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ internal unsafe class Class_GetFieldDefaultValue_Hook : Hook<Class_GetFieldDefau
5656
mask = "xxxxxxxx????xxxxxxx",
5757
xref = false
5858
},
59+
// Idle Slayer - Unity 2021.3.23 (x64)
60+
new MemoryUtils.SignatureDefinition
61+
{
62+
pattern = "\x40\x53\x48\x83\xEC\x20\x48\x8B\xDA\xE8\xCC\xCC\xCC\xCC\x4C",
63+
mask = "xxxxxxxxxx????x",
64+
xref = false
65+
}
5966
};
6067

6168
private static nint FindClassGetFieldDefaultValueXref(bool forceICallMethod = false)
@@ -91,7 +98,11 @@ private static nint FindClassGetFieldDefaultValueXref(bool forceICallMethod = fa
9198
var getStaticFieldValue = XrefScannerLowLevel.JumpTargets(getStaticFieldValueAPI).Single();
9299
Logger.Instance.LogTrace("Field::StaticGetValue: 0x{GetStaticFieldValueAddress}", getStaticFieldValue.ToInt64().ToString("X2"));
93100

94-
var getStaticFieldValueInternal = XrefScannerLowLevel.JumpTargets(getStaticFieldValue).Last();
101+
var getStaticFieldValueTargets = XrefScannerLowLevel.JumpTargets(getStaticFieldValue).ToArray();
102+
if (getStaticFieldValueTargets.Length > 4)
103+
return getStaticFieldValueTargets[^2];
104+
105+
var getStaticFieldValueInternal = getStaticFieldValueTargets.Last();
95106
Logger.Instance.LogTrace("Field::StaticGetValueInternal: 0x{GetStaticFieldValueInternalAddress}", getStaticFieldValueInternal.ToInt64().ToString("X2"));
96107

97108
var getStaticFieldValueInternalTargets = XrefScannerLowLevel.JumpTargets(getStaticFieldValueInternal).ToArray();

0 commit comments

Comments
 (0)