Прошивки Apple больше не будут гигантами. Инженеры создали систему, которая позволяет анализировать десятки тысяч IPSW

leer en español

Прошивки Apple больше не будут гигантами. Инженеры создали систему, которая позволяет анализировать десятки тысяч IPSW

Конец «тяжелому» хранению.

image

Исследователи представили инструмент для анализа прошивок Apple (IPSW), позволяющий существенно экономить место и ускорять работу с системными образами. Поводом для разработки стал рост размеров IPSW-файлов: для примера, образы iPhone 12 Pro Max и MacBook Air M1 достигают десятков гигабайт. Хранить каждую версию полностью оказалось неэффективно, поэтому инженеры создали систему, которая извлекает только необходимые данные.

Решение выполняет автоматическую индексацию коллекции IPSW без сохранения самих образов, структурирует метаданные в базе и предоставляет веб-интерфейс для поиска и фильтрации. Также реализован API, что упрощает интеграцию в аналитические пайплайны.

На первом этапе внимание уделено исполняемым файлам. Каждый бинарь индексируется с извлечением entitlements — специальных разрешений приложений на доступ к ресурсам системы. Одновременно фиксируются используемые фреймворки, что позволяет строить карту зависимостей. Все данные сохраняются в реляционной базе, что ускоряет переход от имени бинаря к его полномочиям и библиотекам.

Существуют и альтернативные инструменты, например сервис Джонатана Левина newosxbook.com, проект entdb на GitHub или ipsw от @blacktop. Однако новое решение подчёркивает полное само-хостирование, что важно для сохранения конфиденциальности.

Авторы подробно описали, как entitlements хранятся в бинарях формата Mach-O. В частности, структура CS_SuperBlob содержит подписи и разрешения, а интересующие данные находятся в блоках с magic-значением CSMAGIC_EMBEDDED_ENTITLEMENTS. Внутри хранится бинарный Plist, где перечислены ключи доступа, например com.apple.private.security.disk-device-access или com.apple.private.kernel.system-override.

Техническая часть реализована на Rust, для взаимодействия с базой используется sea_orm, для HTTP-маршрутизации — axum, а для документации API — utoipa. Интерфейс разработан на ReactJS. База данных поддерживает SQLite и PostgreSQL, а в будущем может быть добавлена совместимость с MySQL.

Для загрузки и монтирования образов применяется утилита ipsw, позволяющая работать с прошивкой как с файловой системой. Такой подход удобен при исследовании структуры или проверке изменений.

Авторы отмечают, что по их данным, собранным через API ipsw.me, на момент выхода iOS 26.0 насчитывалось более 3875 прошивок iPhone, 6375 для iPad, 1500 для Mac и 20 для Apple Vision Pro (VisionOS). Чтобы база не разрасталась линейно, разработчики оптимизировали схему хранения, выделив таблицы many-to-many и избегая дублирования данных.

Инструмент позволяет искать все бинарные файлы, использующие конкретное разрешение, отслеживать зависимости, сравнивать версии IPSW или анализировать отличия между iOS, macOS, tvOS и watchOS. API упрощает автоматизацию: можно регулярно индексировать новые прошивки и сразу выявлять изменения.

Визуальная часть уже доступна — опубликованы примеры интерфейса и архитектуры решения.

Предварительный вид предлагаемого веб-интерфейса

Дальнейшие планы включают автоматическую генерацию public и private headers при выпуске новых версий iOS и macOS. Это позволит строить полный каталог классов, методов и атрибутов, включая внутренние API Apple.