
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 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, damit 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 bewahren..momipaforge.yml generieren..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 Ihrem PATH zu installieren:
python3 ipaforge.py --install
Um die mitgelieferten Distributionsdateien zu extrahieren, ohne sie zu installieren:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
Dies erstellt ein Framework-Verzeichnis im aktuellen Arbeitsverzeichnis, normalerweise ./MyApp/.
Ändern Sie lesbare XML-Dateien innerhalb des generierten Frameworks. Die ursprünglichen Archivdaten und Referenzen werden in original/ aufbewahrt; konvertierte Dateien 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 | Ein IPA in ein bearbeitbares Framework-Verzeichnis dekodieren. |
-b, --build | Ein IPA aus einem dekodierten Framework-Verzeichnis erstellen. |
-f, --force | Ein vorhandenes Ausgabeverzeichnis oder eine Datei überschreiben. |
--no-meta | ipaforge.yml während der Dekodierung nicht schreiben. |
--keep-binary | Alle Dateien während der Dekodierung binär halten; XML-Konvertierung deaktivieren. |
-c 0-9, --compression-level 0-9 | ZIP-Komprimierungsstufe festlegen. Standard: 9. |
--no-sign | Ein absichtlich unsigniertes Archiv erstellen. |
--entitlements FILE | Entitlements in die erstellte Signatur einbetten. |
--p12 FILE | Mit einem echten PKCS#12-Entwicklerzertifikat signieren. |
--p12-password PASS | Passwort für das PKCS#12-Zertifikat. |
--provision FILE | Ein Provisioning-Profil mit --p12 einbetten und verwenden. |
-v, --verbose | Debug-Protokollierung aktivieren. |
-q, --quiet | Nur Fehler ausgeben. |
--version | Die IPAForge-Version anzeigen. |
-h, --help | Hilfe anzeigen. |
Unter Windows kann der Modus automatisch abgeleitet werden: Eine .ipa-Eingabe wird dekodiert und ein Framework-Verzeichnis wird erstellt.
Der Build-Modus signiert Bundles standardmäßig mit dem integrierten Ad-hoc-Signierer. Er erstellt CodeDirectory-Daten für Mach-O-Binärdateien und frische _CodeSignature/CodeResources-Dateien für Anwendungs-Bundles.
Für die Installation auf Standard-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
Unsignierte 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 das neu erstellte IPA gepackt.
IPAForge klassifiziert extrahierte Dateien in Kategorien, darunter:
native-bplist — binäre Property Lists, die in XML konvertiert und als binäre Plists neu erstellt werden.legacy-strings — klassische .strings-Dateien, die in XML konvertiert und als UTF-16-Text neu erstellt werden.xml-plist — vorhandene XML-Plist-Dateien, die als Text bewahrt werden.opaque-compiled — proprietäre kompilierte Apple-Formate, die bytegenau bewahrt werden.native-binary — Mach-O-Executables und -Bibliotheken, die bytegenau bewahrt werden.other-binary — Bilder, Audio, DER-Daten und andere Ressourcen, die bytegenau bewahrt werden.| Code | Bedeutung |
|---|---|
0 | Erfolgreicher Vorgang. |
1 | Laufzeitfehler, z. B. ein ungültiges Archiv oder ein Signierungsfehler. |
2 | Fehler bei der Kommandozeilenverwendung. |
141 | Standardausgabe wurde vorzeitig von einem Pipe-Konsumenten geschlossen. |
IPAForge verarbeitet nicht vertrauenswürdige Archivinhalte. Das Werkzeug wendet defensive Beschränkungen auf einzelne Archivelemente und die gesamte unkomprimierte Archivgröße an, aber Sie sollten unbekannte Dateien dennoch in einer isolierten Umgebung untersuchen.
Verteilen oder installieren Sie Anwendungen nur, wenn Sie das gesetzliche Recht haben, sie zu analysieren und zu signieren.
Fügen Sie hier den Lizenztext des Projekts ein, bevor Sie auf GitHub veröffentlichen. Wenn keine Lizenz enthalten ist, erhalten GitHub-Nutzer nicht automatisch die Erlaubnis, den Code zu verwenden, zu ändern oder weiterzuverbreiten.
Issues und Pull Requests sind willkommen. Bitte geben Sie Folgendes an:
Diese README beschreibt IPAForge 1.24.0.