Исследователь
- Статус
- Оффлайн
- Регистрация
- 20 Фев 2025
- Сообщения
- 11
- Реакции
- 3
сделаем мини поиск смещений для этого нам потребуется проитись по такой цепочке il2cppdomain->il2cppassemblies->il2cppimage->il2cppclass и от него будем гетать смещения
для начала нам нужно получить domain
для этого мы вызываем il2cpp_domain_get
дальше нам нужно получить наши модули (Assembly-csharp.dll и т.д)
для этого есть функция
где a1 это наш domain , а a2 это указатель на переменную int - size_t в которую запишется размер
после чего в цикле нужно итерироваться по каждому assemblies вызывая функция il2cpp_assembly_get_image после чего мы получаем il2cppimage если повторно вызывать il2cppimage мы получим название il2cppimage
дальше мы получаем il2cppclass получить его можно вызвав функция
которая 1 аргументов принимает il2cppimage 2 namespace если откроете в дампе некоторые классы можно увидить namespace допустим "UnityEngine" это и будет 2 аргумент если там ничего нету то можно передать "" а в a3 передается название класса дальше через il2cpp_class_get_fields
получаем поля где 1 аргументом идет сам il2cpp class
для начала нам нужно получить domain
для этого мы вызываем il2cpp_domain_get
дальше нам нужно получить наши модули (Assembly-csharp.dll и т.д)
для этого есть функция
Код:
__int64 __fastcall il2cpp_domain_get_assemblies(__int64 a1, __int64 *a2)
{
_QWORD *v3; // rax
v3 = (_QWORD *)sub_267B20();
*a2 = (__int64)(v3[1] - *v3) >> 3;
return *v3;
}
после чего в цикле нужно итерироваться по каждому assemblies вызывая функция il2cpp_assembly_get_image после чего мы получаем il2cppimage если повторно вызывать il2cppimage мы получим название il2cppimage
дальше мы получаем il2cppclass получить его можно вызвав функция
Код:
_int64 __fastcall il2cpp_class_from_name(__int64 a1, __int64 a2, __int64 a3)
получаем поля где 1 аргументом идет сам il2cpp class
Последнее редактирование: