
ipsw v3.1.716
Швейцарский нож для исследований iOS/macOS
ipsw
Швейцарский армейский нож для исследований iOS/macOS
ipsw — это набор инструментов командной строки для исследования и обратной разработки прошивок Apple. Скачивайте и распаковывайте IPSW и OTA, изучайте бинарные файлы Mach-O и общие кэши dyld, анализируйте kernelcache и работайте с подключёнными устройствами iOS.
Навык для агента · Установка · Примеры CLI · Документация
Использование ipsw с ИИ-агентом
Начните с ipsw-skill, если вы работаете в Claude Code, Codex, Gemini CLI или другом агенте, поддерживающем навыки. Он предоставляет агенту справочник команд и рабочие процессы для извлечения прошивок, анализа бинарных файлов и исследований платформы Apple.
Установите CLI ipsw, затем добавьте навык:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
После этого вы можете ставить задачу на естественном языке. Например:
Скачай последний IPSW для iPhone 15 Pro и извлеки из него kernelcache.
Выгрузи заголовки Objective-C для SpringBoardServices из этого общего кэша dyld.
Сравни KEXT в этих двух kernelcache.
В README навыка приведены инструкции по настройке для отдельных агентов, включая плагин для Claude Code и расширение для Gemini CLI.
Установка
macOS
Homebrew-репозиторий мейнтейнера включает сборку с дополнительными возможностями:
brew install blacktop/tap/ipsw
Также доступна основная формула Homebrew: brew install ipsw.
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Вы также можете скачать бинарные файлы со страницы GitHub Releases. См. руководство по установке для других пакетов и дополнительных зависимостей. Некоторые команды зависят от хост-ОС или варианта сборки; например, поддержка Frida имеет отдельную сборку.
Что можно делать
| Область | Инструменты |
|---|---|
| Прошивки | Скачивание IPSW, OTA, установщиков macOS, Xcode и KDK; извлечение компонентов и сравнение сборок |
| Mach-O | Просмотр load-команд, символов, подписей и entitlements; дизассемблирование кода ARM64 |
| Общие кэши dyld | Поиск символов и перекрёстных ссылок, извлечение dylib, выгрузка заголовков Objective-C и просмотр метаданных Swift |
| Ядро | Извлечение KEXT, просмотр системных вызовов и символов, сравнение kernelcache |
| Компоненты прошивки | Разбор IMG4, расшифровка архивов AEA, просмотр прошивок iBoot и сопроцессоров |
| Устройства | Список устройств и приложений, передача файлов через AFC, захват логов и монтирование образов разработчика |
| App Store Connect | Управление сертификатами, bundle ID, устройствами и профилями подготовки |
| Исследования | Символизация crash-логов, отладка по SSH, трассировка с Frida и декомпиляция с помощью LLM |
Примеры CLI
Замените примеры путей к файлам на свои. Запустите ipsw --help или добавьте --help к любой подкоманде, чтобы увидеть её параметры.
Скачивание и извлечение прошивки
# Скачать последний IPSW для iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
# Просмотреть локальный IPSW и извлечь из него kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw
# Сравнить две сборки прошивки
ipsw diff /path/to/old.ipsw /path/to/new.ipsw
Изучение общего кэша dyld
ipsw dyld info /path/to/dyld_shared_cache_arm64e
# Извлечь Foundation для использования в других инструментах
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation
# Выгрузить заголовки напрямую из кэша
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers
Используйте кэш напрямую для анализа Objective-C: извлечённые dylib всё ещё могут ссылаться на метаданные, хранящиеся в других частях кэша.
Просмотр бинарных файлов и kernelcache
# Явно выберите архитектуру для универсальных бинарных файлов
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main
# Найдите импортируемый символ в каталоге бинарных файлов
ipsw macho search /path/to/binaries --import 'CCCrypt'
# Выведите список KEXT, затем извлеките один по его полному bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts
Работа с подключённым устройством
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
Декомпиляция с помощью LLM
Команды macho disass и dyld disass могут отправлять дизассемблированный код настроенному провайдеру LLM с помощью --dec. См. руководство по декомпилятору для настройки провайдера, выбора модели и примеров.
Конфигурация и автоматизация
CLI читает конфигурацию YAML из ~/.config/ipsw/config.yaml; используйте --config, чтобы выбрать другой файл. См. config.example.yml и руководство по конфигурации для настроек и переменных окружения.
Для скриптов выбирайте архитектуру с помощью --arch при открытии универсальных бинарных файлов и используйте полный путь к dylib, когда короткое имя неоднозначно. Команды, поддерживающие --json, указывают это в своей справке.
Отдельный демон ipswd предоставляет REST API для автоматизации. См. справочник по API.
Документация и сообщество
- Навык для агента и настройка
- Руководства и справочник команд
- Предварительно вычисленные diff'ы прошивок
- GitHub Discussions
- Трекер задач
- DeepWiki — сгенерированное ИИ руководство по кодовой базе
При сообщении об ошибке указывайте ipsw version, выполненную команду и соответствующую сборку прошивки или тип файла. Удаляйте личную информацию из логов и crash-отчётов.
Сборка и участие
Для сборки из исходного кода требуются Go 1.26 или новее и инструментальная цепочка C для CGO:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
См. CONTRIBUTING.md для правил разработки и участия.
Благодарности
Спасибо Jonathan Levin за его инструменты и документацию по внутреннему устройству iOS, сообществу исследователей безопасности Apple и всем, кто вносит код, сообщает об ошибках и делится исследованиями.
Лицензия
MIT.