Help! Hook Void List

imls01245

Platinian
In Boards struct
C#:
public struct Boards {
    // Token: 0x040006C4 RID: 1732
    [Token(Token = "0x4000669")]
    [FieldOffset(Offset = "0x0")]
    public string description;

    // Token: 0x040006C5 RID: 1733
    [Token(Token = "0x400066A")]
    [FieldOffset(Offset = "0x4")]
    public string boardTex;

    // Token: 0x040006C6 RID: 1734
    [Token(Token = "0x400066B")]
    [FieldOffset(Offset = "0x8")]
    public int coinCost;

    // Token: 0x040006C7 RID: 1735
    [Token(Token = "0x400066C")]
    [FieldOffset(Offset = "0xC")]
    public int sodaCost;

    // Token: 0x040006C8 RID: 1736
    [Token(Token = "0x400066D")]
    [FieldOffset(Offset = "0x10")]
    public bool isAvailableToPlayers;

    // Token: 0x040006C9 RID: 1737
    [Token(Token = "0x400066E")]
    [FieldOffset(Offset = "0x14")]
    public PerkType perkType;

    // Token: 0x040006CA RID: 1738
    [Token(Token = "0x400066F")]
    [FieldOffset(Offset = "0x18")]
    public float perkAmount;
}

is used by Skater class:

C#:
[Address(RVA = "0x411D7C", Offset = "0x411D7C", VA = "0x411D7C")]
private void SetBoard(Boards board) { }

and MeMenuGui class:
C#:
[Address(RVA = "0x209D98", Offset = "0x209D98", VA = "0x209D98")]
private void SetBoard(Boards board) { }


The Skater Class and MenuMenu class have Update Function and the Question is how to access the fields from Board struct? or how to access the list of boards in CasMenuGUI

C#:
[FieldOffset(Offset = "0x54")]
public Boards[] boards;
 
I'm using FindObjectOfType but it's still not working, the value doesn't change in game

C++:
void (*old_RoomSettings_OnUpdate)(void *instance);
    void RoomSettings_OnUpdate(void *instance) {
        if(instance!=nullptr) {
            void *type = GetType(CreateString("PlayerInfo"));
            void *object = FindObjectOfType(type);
            if (object!=nullptr) {
                *(int *)((uint64_t) object + 0x24) = 999999;
            }
        }
        old_RoomSettings_OnUpdate(instance);
    }
It's working fine for some field offsets like ammo, but not working at all for others such as money. I tested the int money field offset with game guardian and it works fine
Have I hooked the methods correctly?

C++:
void *(*Find_Object_Of_Type)(void*);
      
void *(*Get_Type)(monoString*);

      

  
    void *FindObjectOfType(void* Type) {
        return Find_Object_Of_Type(Type);
        }

    void *GetType(monoString* Type) {
        return Get_Type(Type);
        }


// Hackthread

Find_Object_Of_Type = (void*(*)(void*)) getAbsoluteAddress(targetLibName, 0x1C55DE4); // UnityEngine.CoreModule - UnityEngine - Object - FindObjectOfType(Type type)
  
Get_Type = (void*(*)(monoString*)) getAbsoluteAddress(targetLibName, 0x13CFCE0); // mscorlib - Sysytem - Type - GetType(string typeName)

The offsets are correct
// RVA: 0x10B0510 Offset: 0x10B0510 VA: 0x10B0510
public static object CreateInstance(Type type, object[] args) { }

How can I set the args here?
 
void set_renderQueue(void* mat, int value) {

static const auto fnz = reinterpret_cast<uint32_t(*)(void*, int)>(getAbsoluteAddress("libil2cpp.so", 0x154DF34));//UnityEngine.CoreModule
fnz(mat, value);

}

void *GetComponent(void *player,void* type) {
if (!player) return NULL;
static const auto getComponent = reinterpret_cast<uint32_t(*)(void *,void*)>(getAbsoluteAddress("libil2cpp.so", 0x15657D0));
return (void *) getComponent(player,type);
}



void *GetType(monoString* type)
{
static const auto fn = reinterpret_cast<uint32_t(*)(monoString*)>(getAbsoluteAddress("libil2cpp.so", 0x109E250));//UnityEngine.CoreModule

return (void *) fn(type);
}


void* Renderer_GetMaterial(void* obj)
{
static const auto fn = reinterpret_cast<uint32_t(*)(void *)>(getAbsoluteAddress("libil2cpp.so", 0x154C2C0));
return (void *) fn(obj);
}
set_renderQueue(Renderer_GetMaterial(GetComponent(player,GetType(CreateMonoString("Renderer")))),3000);

What's wrong here?
 
void set_renderQueue(void* mat, int value) {

static const auto fnz = reinterpret_cast<uint32_t(*)(void*, int)>(getAbsoluteAddress("libil2cpp.so", 0x154DF34));//UnityEngine.CoreModule
fnz(mat, value);

}

void *GetComponent(void *player,void* type) {
if (!player) return NULL;
static const auto getComponent = reinterpret_cast<uint32_t(*)(void *,void*)>(getAbsoluteAddress("libil2cpp.so", 0x15657D0));
return (void *) getComponent(player,type);
}



void *GetType(monoString* type)
{
static const auto fn = reinterpret_cast<uint32_t(*)(monoString*)>(getAbsoluteAddress("libil2cpp.so", 0x109E250));//UnityEngine.CoreModule

return (void *) fn(type);
}


void* Renderer_GetMaterial(void* obj)
{
static const auto fn = reinterpret_cast<uint32_t(*)(void *)>(getAbsoluteAddress("libil2cpp.so", 0x154C2C0));
return (void *) fn(obj);
}
set_renderQueue(Renderer_GetMaterial(GetComponent(player,GetType(CreateMonoString("Renderer")))),3000);

What's wrong here?
 
Back
Top Bottom