Я пишу приложение, которое пытается прочитать некоторые данные из памяти другого процесса. Этот другой процесс загружает libmono.0.dylib, где должны находиться целевые данные (сборки).Чтение полей данных из загруженного dylib в другом процессе
С помощью некоторого кода на основе mach-o я могу выполнить итерацию загруженных dylib целевого процесса и получить базовый файл заголовка mach выше. Отсюда я могу получить к таблице символов, которая дает мне адрес функции, которая возвращает-структуру с соответствующими данными:
В моно исходном коде это выглядит как
MonoDomain* mono_get_root_domain (void) { return mono_root_domain; }
Является ли мое предположение правильным, что адрес 0x18a934 содержит возвращенную структуру? Если да, то этот адрес относится к заголовку dylib (= header_addr + addr), или мне также нужно добавить слайд или просто использовать его как есть? То же самое можно сказать о каждом другом адресе, с которым я сталкиваюсь, когда я следую этому адресу?
Спасибо за ответ! У меня уже есть эта часть, у меня есть загруженный адрес заголовка и указатель на символ. Как вы можете видеть выше, я нашел указатель «внутри» дизассемблированного кода, теперь как его использовать? Если я прочитаю указатель dylib_base_address +, тогда я получаю просто случайные вещи. На какую область vm это указывает? – GooKSL