Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Как искать оффсеты после дампа IL2cppDumper на Unity

Ты знаешь,что 0x70 это смещение fogBrightness ,знаешь что fogBrightness это поле UnderwaterRenderer, нашел указатель на объект UnderwaterRenderer и точно знаешь что это этот объект.И когда ты это нашёл,то 0x70 уже уникальный адрес,потому что он ведь относится к какому-то определенному классу и полю.И получается вот именно та функция,которая тебе требуется
указатель всмысле // type index: 13222? или ты имеешь ввиду искать по всему дампу указатель?,если знаешь, напиши как примерно может выглядить указатель
 
указатель всмысле // type index: 13222? или ты имеешь ввиду искать по всему дампу указатель?,если знаешь, напиши как примерно может выглядить указатель
Я имею ввиду указатель на UnderwaterRenderer,его найти надо



Могу ошибаться,не знаю
 
Я имею ввиду указатель на UnderwaterRenderer,его найти надо



Могу ошибаться,не знаю
у вас для помощи есть script.json и il2cpp.h. Копируем с il2cpp.h структуры UnderwaterRenderer_o, UnderwaterRenderer_Fields и UnderwaterRenderer_StaticFields если есть. нашли например функцию UnderwaterRenderer$$Update - хукаем, первым аргументом будет указатель на UnderwaterRenderer_o (если функция Update не статичная конечно же) и можете менять fogBrightness поле. Я не смотрел что у вас конкретно там, но думаю может получится что-то в этом роде:
C++:
Expand Collapse Copy
InlineHook hook;
void UnderwaterRendererUpdate(UnderwaterRenderer_o* self, const void* methodInfo) {
    self->fields.fogBrightness = 1.0f;
    
    return hook.call(self, methodInfo);
}

hook.install(gameAssembly + offset);

Если бесит каждый раз писать self->fields можно сделать такую структуру:
C++:
Expand Collapse Copy
template<typename Klass>
class Class {
public:
    Klass klass() const {
        return _klass;
    }
private:
    Klass _klass;
    pvoid _monitor;
};

// Как пример
class AxleboltVerification : public Class<void*> {
public:
    String* _contentHash;
    Dictionary<String*, String*>* _appSnapshot;
    ...и остальные поля класса
};
 
у вас для помощи есть script.json и il2cpp.h. Копируем с il2cpp.h структуры UnderwaterRenderer_o, UnderwaterRenderer_Fields и UnderwaterRenderer_StaticFields если есть. нашли например функцию UnderwaterRenderer$$Update - хукаем, первым аргументом будет указатель на UnderwaterRenderer_o (если функция Update не статичная конечно же) и можете менять fogBrightness поле. Я не смотрел что у вас конкретно там, но думаю может получится что-то в этом роде:
C++:
Expand Collapse Copy
InlineHook hook;
void UnderwaterRendererUpdate(UnderwaterRenderer_o* self, const void* methodInfo) {
    self->fields.fogBrightness = 1.0f;
   
    return hook.call(self, methodInfo);
}

hook.install(gameAssembly + offset);

Если бесит каждый раз писать self->fields можно сделать такую структуру:
C++:
Expand Collapse Copy
template<typename Klass>
class Class {
public:
    Klass klass() const {
        return _klass;
    }
private:
    Klass _klass;
    pvoid _monitor;
};

// Как пример
class AxleboltVerification : public Class<void*> {
public:
    String* _contentHash;
    Dictionary<String*, String*>* _appSnapshot;
    ...и остальные поля класса
};
спасбо, помогло
у вас для помощи есть script.json и il2cpp.h. Копируем с il2cpp.h структуры UnderwaterRenderer_o, UnderwaterRenderer_Fields и UnderwaterRenderer_StaticFields если есть. нашли например функцию UnderwaterRenderer$$Update - хукаем, первым аргументом будет указатель на UnderwaterRenderer_o (если функция Update не статичная конечно же) и можете менять fogBrightness поле. Я не смотрел что у вас конкретно там, но думаю может получится что-то в этом роде:
C++:
Expand Collapse Copy
InlineHook hook;
void UnderwaterRendererUpdate(UnderwaterRenderer_o* self, const void* methodInfo) {
    self->fields.fogBrightness = 1.0f;
   
    return hook.call(self, methodInfo);
}

hook.install(gameAssembly + offset);

Если бесит каждый раз писать self->fields можно сделать такую структуру:
C++:
Expand Collapse Copy
template<typename Klass>
class Class {
public:
    Klass klass() const {
        return _klass;
    }
private:
    Klass _klass;
    pvoid _monitor;
};

// Как пример
class AxleboltVerification : public Class<void*> {
public:
    String* _contentHash;
    Dictionary<String*, String*>* _appSnapshot;
    ...и остальные поля класса
};
кстатие, есть игра: Grapples galore , она на il2cpp, не mono, я не могу найти оффсет (из дампа) для EntityList, вот дамп
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad) , это моя первая работа с unity играми , реализовал почти все, кроме есп
 
Последнее редактирование:
спасбо, помогло

кстатие, есть игра: Grapples galore , она на il2cpp, не mono, я не могу найти оффсет (из дампа) для EntityList, вот дамп
Пожалуйста, авторизуйтесь для просмотра ссылки.
(noad) , это моя первая работа с unity играми , реализовал почти все, кроме есп
в dnSpy игру пробовал открывать? посмотри логику и там будет понятно что есть энтити лист
 
в dnSpy игру пробовал открывать? посмотри логику и там будет понятно что есть энтити лист
А что типо если игра на IL2cpp ее можно через dnSpy открыть?Я думал только дампить можно,а dnSpy для моно
 
Назад
Сверху Снизу