Розыгрыш Premium и Уникальной юзергруппы на форуме! Перейти

Вопрос Как искать оффсеты после дампа 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 для моно
 
Назад
Сверху Снизу