Мах-О
-
Информация о таблице символов
- Таблица символов содержит информацию о символах в двоичном файле Mach-O.
- Символы могут быть неопределенными, внешними или локальными.
- Порядок расположения символов в таблице важен для корректной загрузки.
-
Информация о команде «Информация о таблице символов»
- Команда используется для получения информации о символах в таблице символов.
- Индекс символа умножается на определенные коэффициенты для определения смещения.
- Локальные символы используются для отладочной информации, а количество локальных символов — это их количество после индекса символа.
-
Косвенная таблица и сжатая таблица _LINKEDIT
- Косвенная таблица используется для загрузки вызовов методов.
- Сжатая таблица _LINKEDIT позволяет избежать необходимости в таблице косвенных символов и разделах заглушек и указателей.
-
Обязательная информация в таблице символов
- Разделы bind, weak bind и lazy bind имеют одинаковый формат кода операции.
- Слабая привязка позволяет загружать символ из другого файла Mach-O при отсутствии в текущем.
- Ленивый символ записывается в dyld_stub_binder и заменяется при необходимости.
-
Основная точка входа в приложение
- Команда загрузки с типом 0x00000028 указывает адрес начала приложения.
- Если сегменты программы не перемещены, то основной точкой входа является точный адрес.
-
UUID-номер приложения
- Команда загрузки с типом 0x0000001B указывает универсальный уникальный идентификатор (UUID) приложения.
- UUID содержит 128-битный случайный номер для идентификации файла в интернете или магазинах приложений.
- Пересказана только часть статьи. Для продолжения перейдите к чтению оригинала.