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?
 
Giúp đỡ!!
tôi đã cố gắng hiểu và chỉnh sửa tập lệnh của mình nhiều lần nhưng vẫn báo lỗi khi chạy "lỗi sử dụng định nghĩa báo cáo chưa được khai báo 'CreatString'"
tôi sử dụng AIDE
Capture.PNG
 
update: Im Trying To get the instance of another class using FindObjectOfType of Unity Engine

monoArray struct
C++:
template <typename T>
struct monoArray
{
    void* klass;
    void* monitor;
    void* bounds;
    int max_length;
    void* vector[1];
    int getLength()
    {
        return max_length;
    }
    T getPointer()
    {
        return (T)vector;
    }
};

making the function pointer of this:
C#:
// RVA: 0xA37D1C Offset: 0xA37D1C VA: 0xA37D1C
public static Type GetType(string typeName) { }

// RVA: 0xD007B4 Offset: 0xD007B4 VA: 0xD007B4
public static Object[] FindObjectsOfType(Type type) { }

function pointer:
C++:
monoArray<void**>* FindObjectsOfType(void* Type) {
    static const auto green_fn = (monoArray<void**>*(*)(void*)) (getAbsoluteAddress("libil2cpp.so", 0xD007B4)); //Offset
    return green_fn(Type);
}

void *GetType(monoString* Type) {
    static const auto fn = (void* (*)(monoString*)) (getAbsoluteAddress("libil2cpp.so", 0xA37D1C)); //Offset
    return fn(Type);
}

My Hook
C++:
bool debug;

void (*old_MainMenu_update)(void *instance);
void MainMenu_update(void *instance) {
    if (instance != NULL && debug) {
        monoArray<void**>* objMaterial = FindObjectsOfType(GetType(CreateMonoString("BalanceMeterLogic")));
        if(objMaterial != NULL) {
            int length = objMaterial->getLength();
            void **objects = objMaterial->getPointer();
      
            for (int x = 0; x < length; x++) {
                void *object = objects[x];

                if (object != NULL) {
                    *(bool*)((uint64_t)object + 0x8) = false;
                }
            }
        }
    }
    return old_MainMenu_update(instance);
}

//HackThread
HOOK_LIB("libil2cpp.so", "0x201EF8", MainMenu_update, old_MainMenu_update);

//switch case
case 11:
            debug = boolean;
            break;
}

what went wrong?
info: im using lgl mod menu 2.9

Reference: Find Instance of any class, fields, methods (numark)
Hello brother, can you please upload the lgl mod menu 2.9 you used? I would really appreciate it. I always get CreateMonoString errors the 3.2 version I'm using. If it's convenient, please upload it and I would be very grateful to you.
 
Back
Top Bottom