
Abhängigkeitsfreies Python-CLI zum Entpacken, Inspizieren, Bearbeiten und Neuerstellen von iOS-.ipa-Archiven, das Plists und Strings in XML konvertiert und dabei Mach-O-Binärdateien und Signierungs-Bundles bewahrt.
#IPAForge
IPAForge ist ein abhängigkeitsfreies Python-Kommandozeilenwerkzeug zum Entpacken, Inspizieren, Bearbeiten und Neuerstellen von iOS-.ipa-Archiven.
Es extrahiert das vollständige Archiv, konvertiert bearbeitbare Apple-Plist- und Lokalisierungsformate in lesbares XML, bewahrt undurchsichtige und binäre Inhalte bytegenau auf und zeichnet jede Konvertierung in ipaforge.yml auf, sodass das Framework originalgetreu neu erstellt werden kann.
Verantwortungsvoll verwenden: IPAForge ist für Interoperabilität, Sicherheitsforschung und legitime Anwendungsanalyse gedacht. Beachten Sie geltende Gesetze, Lizenzen und Nutzungsbedingungen.
.ipa-Archive dekodieren und neu erstellen..strings-Dateien in bearbeitbares XML konvertieren..car, .nib und .mom bewahren.ipaforge.yml erzeugen..ipa-Archiv, das ein Payload/<AppName>.app-Bundle enthält.IPAForge kann direkt als einzelne Python-Datei verwendet werden:
python3 ipaforge.py --help
Um den Befehl ipaforge in deinem PATH zu installieren:
python3 ipaforge.py --install
Um die gebündelten Distributionsdateien zu extrahieren, ohne sie zu installieren:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
Dadurch wird ein Framework-Verzeichnis im aktuellen Arbeitsverzeichnis erstellt, normalerweise ./MyApp/.
Ändern Sie lesbare XML-Dateien innerhalb des generierten Frameworks. Die ursprünglichen Archivdaten und Referenzen werden in original/ aufbewahrt; Dateien, die konvertiert wurden, werden in ipaforge.yml nachverfolgt.
ipaforge -b MyApp
Die Standardausgabe ist ./MyApp-signed.ipa im aktuellen Arbeitsverzeichnis.
ipaforge -d MyApp.ipa decoded-framework
ipaforge -b decoded-framework rebuilt.ipa
ipaforge -d, --decode INPUT [OUTPUT]
ipaforge -b, --build INPUT [OUTPUT]
| Option | Beschreibung |
|---|---|
-d, --decode | Dekodiert eine IPA in ein bearbeitbares Framework-Verzeichnis. |
-b, --build | Erstellt eine IPA aus einem dekodierten Framework-Verzeichnis. |
-f, --force | Überschreibt ein vorhandenes Ausgabeverzeichnis oder eine vorhandene Datei. |
--no-meta | Schreibt ipaforge.yml während der Dekodierung nicht. |
--keep-binary | Behält alle Dateien während der Dekodierung binär bei; deaktiviert die XML-Konvertierung. |
-c 0-9, --compression-level 0-9 | Legt die ZIP-Kompressionsstufe fest. Standard: 9. |
--no-sign | Erstellt ein absichtlich unsigniertes Archiv. |
--entitlements FILE | Bettet Entitlements in die erstellte Signatur ein. |
--p12 FILE | Signiert mit einem echten PKCS#12-Entwicklerzertifikat. |
--p12-password PASS | Passwort für das PKCS#12-Zertifikat. |
--provision FILE | Bettet ein Provisioning-Profil ein und verwendet es mit --p12. |
-v, --verbose | Aktiviert Debug-Logging. |
-q, --quiet | Gibt nur Fehler aus. |
--version | Zeigt die IPAForge-Version an. |
-h, --help | Zeigt die Hilfe an. |
Unter Windows kann der Modus automatisch erkannt werden: Eine .ipa-Eingabe wird dekodiert und ein Framework-Verzeichnis wird erstellt.
Der Build-Modus signiert Bundles standardmäßig mit dem integrierten Ad-hoc-Signer. Er erstellt CodeDirectory-Daten für Mach-O-Binärdateien und neue _CodeSignature/CodeResources-Dateien für Anwendungsbundles.
Für die Installation auf nicht modifizierten iOS-Geräten verwenden Sie ein echtes Entwicklerzertifikat und ein kompatibles Provisioning-Profil:
ipaforge -b MyApp \
--p12 developer.p12 \
--p12-password 'your-password' \
--provision embedded.mobileprovision
Um benutzerdefinierte Entitlements einzubetten:
ipaforge -b MyApp --entitlements entitlements.plist
Um absichtlich ein unsigniertes Archiv zu erstellen:
ipaforge -b MyApp --no-sign
Nicht signierte Archive können von iOS im Allgemeinen nicht installiert werden.
Ein dekodiertes Framework enthält üblicherweise:
MyApp/
├── Payload/
│ └── MyApp.app/
├── original/ # reference copies of signatures, profiles, and entitlements
├── readable/ # human-readable summaries for opaque formats and binaries
└── ipaforge.yml # file classifications and conversion metadata
Das Verzeichnis original/ und ipaforge.yml werden niemals in die neu erstellte IPA gepackt.
IPAForge klassifiziert extrahierte Dateien in Kategorien, darunter:
native-bplist — binäre Property Lists, die in XML umgewandelt und als binäre Plists neu erstellt werden.legacy-strings — klassische .strings-Dateien, die in XML umgewandelt und als UTF-16-Text neu erstellt werden.xml-plist — vorhandene XML-Plist-Dateien, die als Text beibehalten werden.opaque-compiled — proprietäre kompilierte Apple-Formate, die bytegenau beibehalten werden.native-binary — Mach-O-Executables und -Bibliotheken, die bytegenau beibehalten werden.other-binary — Bilder, Audio, DER-Daten und andere Ressourcen, die bytegenau beibehalten werden.| Code | Bedeutung |
|---|---|
0 | Erfolgreicher Vorgang. |
1 | Laufzeitfehler, etwa ein ungültiges Archiv oder ein Signaturfehler. |
2 | Fehler bei der Befehlszeilenverwendung. |
141 | Standardausgabe vorzeitig durch einen Pipe-Consumer geschlossen. |
IPAForge verarbeitet nicht vertrauenswürdige Archivinhalte. Das Tool wendet defensive Beschränkungen auf einzelne Archivelemente und die gesamte unkomprimierte Archivgröße an, dennoch sollten Sie unbekannte Dateien in einer isolierten Umgebung prüfen.
Verteilen oder installieren Sie keine Anwendungen, es sei denn, Sie haben das gesetzliche Recht, sie zu analysieren und zu signieren.
Diese README beschreibt IPAForge 1.24.0.
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.