Perfare / Il2CppDumper

Unity il2cpp reverse engineer
MIT License
6.67k stars 1.29k forks source link

VTable structs are off #763

Open karaok1 opened 7 months ago

karaok1 commented 7 months ago

Note: if you do not provide all of the following information I will directly ignore and close this issue

dictPtr->klass->vtable._41_get_Count.methodPtr returns wrong pointer but same dictionary rgctx_data method works fine.

this returns legit pointer: dictPtr->klass->rgctx_data->_39_System_Collections_Generic_Dictionary_TKey__TValue__get_Count->methodPointer;

struct System_Collections_Generic_Dictionary_TKey__TValue__VTable {
    VirtualInvokeData _0_Equals;
    VirtualInvokeData _1_Finalize;
    VirtualInvokeData _2_GetHashCode;
    VirtualInvokeData _3_ToString;
    VirtualInvokeData _4_unknown;
    VirtualInvokeData _5_set_Item;
    VirtualInvokeData _6_System_Collections_Generic_IDictionary_TKey_TValue__get_Keys;
    VirtualInvokeData _7_System_Collections_Generic_IDictionary_TKey_TValue__get_Values;
    VirtualInvokeData _8_unknown;
    VirtualInvokeData _9_Add;
    VirtualInvokeData _10_Remove;
    VirtualInvokeData _11_unknown;
    VirtualInvokeData _12_unknown;
    VirtualInvokeData _13_System_Collections_Generic_ICollection_System_Collections_Generic_KeyValuePair_TKey_TValue___get_IsReadOnly;
    VirtualInvokeData _14_System_Collections_Generic_ICollection_System_Collections_Generic_KeyValuePair_TKey_TValue___Add;
    VirtualInvokeData _15_unknown;
    VirtualInvokeData _16_System_Collections_Generic_ICollection_System_Collections_Generic_KeyValuePair_TKey_TValue___Contains;
    VirtualInvokeData _17_System_Collections_Generic_ICollection_System_Collections_Generic_KeyValuePair_TKey_TValue___CopyTo;
    VirtualInvokeData _18_System_Collections_Generic_ICollection_System_Collections_Generic_KeyValuePair_TKey_TValue___Remove;
    VirtualInvokeData _19_System_Collections_Generic_IEnumerable_System_Collections_Generic_KeyValuePair_TKey_TValue___GetEnumerator;
    VirtualInvokeData _20_System_Collections_IEnumerable_GetEnumerator;
    VirtualInvokeData _21_System_Collections_IDictionary_get_Item;
    VirtualInvokeData _22_System_Collections_IDictionary_set_Item;
    VirtualInvokeData _23_System_Collections_IDictionary_get_Keys;
    VirtualInvokeData _24_System_Collections_IDictionary_get_Values;
    VirtualInvokeData _25_System_Collections_IDictionary_Contains;
    VirtualInvokeData _26_System_Collections_IDictionary_Add;
    VirtualInvokeData _27_Clear;
    VirtualInvokeData _28_System_Collections_IDictionary_get_IsReadOnly;
    VirtualInvokeData _29_System_Collections_IDictionary_get_IsFixedSize;
    VirtualInvokeData _30_System_Collections_IDictionary_GetEnumerator;
    VirtualInvokeData _31_System_Collections_IDictionary_Remove;
    VirtualInvokeData _32_System_Collections_ICollection_CopyTo;
    VirtualInvokeData _33_unknown;
    VirtualInvokeData _34_System_Collections_ICollection_get_SyncRoot;
    VirtualInvokeData _35_System_Collections_ICollection_get_IsSynchronized;
    VirtualInvokeData _36_ContainsKey;
    VirtualInvokeData _37_TryGetValue;
    VirtualInvokeData _38_get_Item;
    VirtualInvokeData _39_System_Collections_Generic_IReadOnlyDictionary_TKey_TValue__get_Keys;
    VirtualInvokeData _40_System_Collections_Generic_IReadOnlyDictionary_TKey_TValue__get_Values;
    VirtualInvokeData _41_get_Count;
    VirtualInvokeData _42_unknown;
    VirtualInvokeData _43_unknown;
    VirtualInvokeData _44_GetObjectData;
    VirtualInvokeData _45_OnDeserialization;
};