
Schweizer Taschenmesser für iOS/macOS-Forschung
<p align="center">
<a href="https://github.com/blacktop/ipsw"><img alt="IPSW Logo" src="https://raw.githubusercontent.com/blacktop/ipsw/master/www/static/img/logo/ipsw.svg" height="140" /></a>
<h1 align="center">ipsw</h1>
<h4><p align="center">iOS/macOS Research Swiss Army Knife</p></h4>
<p align="center">
<a href="https://github.com/blacktop/ipsw/actions" alt="Actions">
<img src="https://github.com/blacktop/ipsw/actions/workflows/go.yml/badge.svg" /></a>
<a href="https://github.com/blacktop/ipsw/releases/latest" alt="Downloads">
<img src="https://img.shields.io/github/downloads/blacktop/ipsw/total.svg" /></a>
<a href="https://github.com/blacktop/ipsw/releases" alt="GitHub Release">
<img src="https://img.shields.io/github/release/blacktop/ipsw.svg" /></a>
<a href="http://doge.mit-license.org" alt="LICENSE">
<img src="https://img.shields.io/:license-mit-blue.svg" /></a>
</p>
<br>
**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](https://github.com/blacktop/ipsw-skill) · [Installation](#install) · [CLI-Beispiele](#cli-examples) · [Dokumentation](https://blacktop.github.io/ipsw)
## ipsw mit einem KI-Agenten verwenden
Beginne mit **[ipsw-skill](https://github.com/blacktop/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](#install) und füge dann den Skill hinzu:
```sh
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](https://github.com/blacktop/ipsw-skill#installation) 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:
```sh
brew install blacktop/tap/ipsw
```
Die Homebrew-Core-Formel ist ebenfalls verfügbar: `brew install ipsw`.
### Linux
```sh
sudo snap install ipsw
```
### Windows
```powershell
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
```
Du kannst Binaries auch von [GitHub Releases](https://github.com/blacktop/ipsw/releases/latest) herunterladen. Siehe die [Installationsanleitung](https://blacktop.github.io/ipsw/docs/getting-started/installation) 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
```sh
# 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
```sh
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
```sh
# 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
```sh
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](https://blacktop.github.io/ipsw/docs/guides/decompiler) 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](https://github.com/blacktop/ipsw/blob/master/config.example.yml) und die [Konfigurationsanleitung](https://blacktop.github.io/ipsw/docs/getting-started/configuration) 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](https://blacktop.github.io/ipsw/api/).
## Dokumentation und Community
- [Agent skill und Einrichtung](https://github.com/blacktop/ipsw-skill)
- [Anleitungen und Befehlsreferenz](https://blacktop.github.io/ipsw)
- [Vorberechnete Firmware-Diffs](https://github.com/blacktop/ipsw-diffs)
- [GitHub Discussions](https://github.com/blacktop/ipsw/discussions)
- [Issue-Tracker](https://github.com/blacktop/ipsw/issues)
- [DeepWiki](https://deepwiki.com/blacktop/ipsw), 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:
```sh
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
```
Siehe [CONTRIBUTING.md](https://github.com/blacktop/ipsw/blob/master/CONTRIBUTING.md) für Entwicklungs- und Beitragsrichtlinien.
## Danksagungen
Dank an Jonathan Levin für seine Tools und seine Dokumentation zu iOS-Interna, die Apple-Sicherheitsforschungs-Community und alle, die Code, Bug-Reports und Forschung beitragen.
## Lizenz
[MIT](https://github.com/blacktop/ipsw/blob/master/LICENSE).