Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос [Android 13, Unity, GG для дампа] Получение расшифрованных libil2cpp.so и global-metadata.dat для il2cppdumper, дампер не берет задампленный сошник.

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
2 Фев 2026
Сообщения
4
Реакции
0
Пытаюсь получить добро описанное выше. Игра Festibattle (Unity, IL2CPP v31, Android 12+)
Что уже сделано: (Android 13 emulator, root) Есть dump.cs. Из памяти вытащен и расшифрован global-metadata.dat (заголовок AF 1B B1 FA подтвержден), до этого были другие значения у оригинала с папки Data в HxD - полностью совпал с зашифрованным по размеру после очистки нулей. Был еще очищен от нулей в конце. Снят дамп libil2cpp.so из памяти (500МБ) с помощью GG и есть оригинальный .so из APK (300МБ). После прогона через SoFixer с начальным адресом (до этого проверил HEX у обоих - начало совпадало с оригиналом и дампнутым), дампер выдал такое:
Initializing metadata...
Metadata Version: 31
Initializing il2cpp file...
Applying relocations...
Il2Cpp Version: 31
Detected this may be a dump file.
Input il2cpp dump address or input 0 to force continue:
0
Searching...
CodeRegistration : 0
MetadataRegistration : 0
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.ThrowHelper.ThrowNoMatchException()
at Il2CppDumper.Elf64.SymbolSearch() in C:\projects\il2cppdumper\Il2CppDumper\ExecutableFormats\Elf64.cs:line 102
at Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 227
Без прогона через SoFixer с адресом:
Initializing metadata...
Metadata Version: 31
Initializing il2cpp file...
Applying relocations...
WARNING: find .init_proc
ERROR: This file may be protected.
Il2Cpp Version: 31
Detected this may be a dump file.
Input il2cpp dump address or input 0 to force continue:
72438137F000
Searching...
CodeRegistration : 0
MetadataRegistration : 0
System.InvalidOperationException: Sequence contains no matching element
at System.Linq.ThrowHelper.ThrowNoMatchException()
at Il2CppDumper.Elf64.SymbolSearch() in C:\projects\il2cppdumper\Il2CppDumper\ExecutableFormats\Elf64.cs:line 102
at Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 227

Пошел к инспектору, тот с этими файлами выдал:
Failed to auto-detect any IL2CPP binary images in the provided files. This may mean the binary file is packed, encrypted or obfuscated, that the file is not an IL2CPP image or that Il2CppInspector was not able to automatically find the required data. Please check the binary file in a disassembler to ensure that it is an unencrypted IL2CPP binary before submitting a bug report!
Зашел в HEX смотреть что там, там данные идут, затем нули с перемешкой с данными, затем огромные блоки с нулями.

Суть вопроса: Что я делаю не так для дампа правильных данных, чтобы скормить его дамперу? Японская игра не шибко старая, где-то вышла в 2024. Судя по ошибке, я так понимаю libil2cpp.so зашифрован поэтому не может соответствие найти, что делать? Как расшифровать?

Это можно описать как: "дал макаке инструменты, а он инструмент раз____л и дамп сделал неправильно". Приму любую критику от вас и поправки для корректных действий в будущем.
 
попробуй использовать Zygisk-Il2CppDumper или LSPosed-Il2CppDumper. GG делает грязные дампы часто, если даже так ничего не нашёл, то кинь оригинальный libil2cpp.so в ida и попробуй найти функцию il2cpp::vm::MetadataCache::Register, в ней есть два указателя это и есть нужные тебе CodeRegistration и MetadataRegistration. Вроде оно так, но честно не особо уверен, что оно поможет, но попробовать стоит, мейби там кастомный проектор, темида или x64dbg?
 
Zygisk дампер дал только dump.cs, прошерстил туда сюда в поисках задампленных двух вышеперечисленных - не было. МетадатаКэш именно в иде смотреть? В гидре ничего примечательного не было, разве что мусорные функции и некликабельные с ковычками функции
 
Zygisk дампер дал только dump.cs, прошерстил туда сюда в поисках задампленных двух вышеперечисленных - не было. МетадатаКэш именно в иде смотреть? В гидре ничего примечательного не было, разве что мусорные функции и некликабельные с ковычками функции
если у тебя уже есть dump.cs от Zygisk-дампера, то уже все норм, дампер не может выдать dump.cs без этих двух указателей, положи болт на ошибку в консоли Il2CppDumper просто используй полученный файл, ну а если же тебе нужно именно ковырять логику в IDA — бери адреса методов из dump.cs и переходи по ним в оригинальном .so файле. Если сильно хочется, то ищи строку "Runtime invoked compiler-generated static constructor", обычно рядом лежит инициализация метаданных, ну по сути оно должно быть так:) или по байтам пробуй, ищи вызовы функций которые принимают два аргумента, X0 и X1 где-то рядом с инициализацией библиотеки, это вроде и будет g_CodeRegistration и g_MetadataRegistration, если даже так не смог ничего найти, то используй скрипт frida-il2cpp-bridge и не забывай в ida про ida_with_struct_py3.py, ну если кончено есть script.json, ну и ещё один момент, когда будешь прыгать по адресам в IDA, помни про Offset в dump.cs указаны относительные адреса, а если в IDA у тебя база файла установлена в 0, то просто жми G и вбивай адрес из дампа, ну а если база другая не забудь прибавить смещение, иначе ничего ты не найдёшь, честно без понятия поможет оно тебе или нет, но буду надеется, что да:)
 
Последнее редактирование:

Похожие темы

Ответы
12
Просмотры
469
Назад
Сверху Снизу