
ipsw v3.1.716
Schweizer Taschenmesser für iOS/macOS-Forschung
ipsw
iOS/macOS Research Swiss Army Knife
ipsw ist ein Kommandozeilen-Toolkit für Apple-Firmware-Forschung und Reverse Engineering. Lade IPSWs und OTAs herunter und entpacke sie, untersuche Mach-O-Binaries und dyld Shared Caches, analysiere Kernelcaches und arbeite mit verbundenen iOS-Geräten.
Agent skill · Installation · CLI-Beispiele · Dokumentation
ipsw mit einem KI-Agenten verwenden
Beginne mit ipsw-skill, wenn du in Claude Code, Codex, Gemini CLI oder einem anderen Agenten arbeitest, der Skills unterstützt. Es stellt dem Agenten Befehlsreferenzen und Workflows für Firmware-Extraktion, Binäranalyse und Apple-Plattformforschung bereit.
Installiere die ipsw CLI und füge dann den Skill hinzu:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
Anschließend kannst du eine Aufgabe in natürlicher Sprache stellen. Zum Beispiel:
Lade das neueste IPSW für iPhone 15 Pro herunter und extrahiere dessen Kernelcache.
Dumpe die Objective-C-Header für SpringBoardServices aus diesem dyld Shared Cache.
Vergleiche die KEXTs in diesen beiden Kernelcaches.
Die Skill-README enthält Einrichtungsanweisungen für einzelne Agenten, einschließlich des Claude Code Plugins und der Gemini CLI Erweiterung.
Installation
macOS
Der Homebrew-Tap des Maintainers enthält den Extras-Build:
brew install blacktop/tap/ipsw
Die Homebrew-Core-Formel ist ebenfalls verfügbar: brew install ipsw.
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Du kannst Binaries auch von GitHub Releases herunterladen. Siehe die Installationsanleitung für weitere Pakete und optionale Abhängigkeiten. Einige Befehle hängen vom Host-Betriebssystem oder der Build-Variante ab; Frida-Unterstützung beispielsweise hat einen separaten Build.
Was du tun kannst
| Bereich | Werkzeuge |
|---|---|
| Firmware | IPSWs, OTAs, macOS-Installer, Xcode und KDKs herunterladen; Komponenten extrahieren und Builds vergleichen |
| Mach-O | Load Commands, Symbole, Signaturen und Entitlements untersuchen; ARM64-Code disassemblieren |
| dyld Shared Caches | Symbole und Querverweise finden, dylibs extrahieren, Objective-C-Header dumpen und Swift-Metadaten untersuchen |
| Kernel | KEXTs extrahieren, Syscalls und Symbole untersuchen und Kernelcaches vergleichen |
| Firmware-Komponenten | IMG4 parsen, AEA-Archive entschlüsseln und iBoot- sowie Coprozessor-Firmware untersuchen |
| Geräte | Geräte und Apps auflisten, Dateien mit AFC übertragen, Logs erfassen und Developer Images einbinden |
| App Store Connect | Zertifikate, Bundle-IDs, Geräte und Provisioning Profiles verwalten |
| Forschung | Crash-Logs symbolisieren, über SSH debuggen, mit Frida tracen und mit einem LLM dekompilieren |
CLI-Beispiele
Ersetze die Beispiel-Dateipfade durch deine eigenen. Führe ipsw --help aus oder füge --help an einen beliebigen Unterbefehl an, um dessen Optionen zu sehen.
Firmware herunterladen und extrahieren
# Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
# Inspect a local IPSW and extract its kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw
# Compare two firmware builds
ipsw diff /path/to/old.ipsw /path/to/new.ipsw
Einen dyld Shared Cache erkunden
ipsw dyld info /path/to/dyld_shared_cache_arm64e
# Extract Foundation for use in other tools
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation
# Dump headers directly from the cache
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers
Verwende den Cache direkt für die Objective-C-Analyse: Extrahierte dylibs können weiterhin auf Metadaten verweisen, die an anderer Stelle im Cache gespeichert sind.
Binaries und Kernelcaches untersuchen
# Select an architecture explicitly for universal binaries
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main
# Search a directory of binaries for an imported symbol
ipsw macho search /path/to/binaries --import 'CCCrypt'
# List KEXTs, then extract one by its full bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts
Mit einem verbundenen Gerät arbeiten
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
Mit einem LLM dekompilieren
Die Befehle macho disass und dyld disass können Disassembly mit --dec an einen konfigurierten LLM-Anbieter senden. Siehe die Dekompilierer-Anleitung für die Einrichtung des Anbieters, Modellauswahl und Beispiele.
Konfiguration und Automatisierung
Die CLI liest YAML-Konfiguration aus ~/.config/ipsw/config.yaml; verwende --config, um eine andere Datei auszuwählen. Siehe config.example.yml und die Konfigurationsanleitung für Einstellungen und Umgebungsvariablen.
Wähle für Skripte eine Architektur mit --arch beim Öffnen universeller Binaries und verwende einen vollständigen dylib-Pfad, wenn ein Kurzname mehrdeutig ist. Befehle, die --json unterstützen, dokumentieren dies in ihrer Hilfe.
Der separate ipswd-Daemon stellt eine REST-API für die Automatisierung bereit. Siehe die API-Referenz.
Dokumentation und Community
- Agent skill und Einrichtung
- Anleitungen und Befehlsreferenz
- Vorberechnete Firmware-Diffs
- GitHub Discussions
- Issue-Tracker
- DeepWiki, ein KI-generierter Leitfaden zur Codebasis
Wenn du einen Bug meldest, gib ipsw version, den ausgeführten Befehl und den relevanten Firmware-Build oder Dateityp an. Entferne persönliche Informationen aus Logs und Crash-Berichten.
Build und Mitwirken
Das Bauen aus dem Quellcode erfordert Go 1.26 oder neuer und eine C-Toolchain für CGO:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Siehe CONTRIBUTING.md für Entwicklungs- und Beitragsrichtlinien.