
CLI Python senza dipendenze per estrarre, ispezionare, modificare e ricostruire archivi .ipa di iOS, convertendo plist e stringhe in XML preservando i binari Mach-O e i bundle di firma.
#IPAForge
IPAForge è uno strumento da riga di comando Python senza dipendenze per estrarre, ispezionare, modificare e ricostruire archivi iOS .ipa.
Estrae l'archivio completo, converte i formati plist e di localizzazione Apple modificabili in XML leggibile, preserva byte per byte i contenuti opachi e binari e registra ogni conversione in ipaforge.yml in modo che il framework possa essere ricostruito fedelmente.
Usare in modo responsabile: IPAForge è destinato all'interoperabilità, alla ricerca sulla sicurezza e all'analisi legittima delle applicazioni. Rispettare le leggi, le licenze e i termini di servizio applicabili.
.ipa standard..strings in XML modificabile..car, .nib e .mom.ipaforge.yml..ipa valido contenente un bundle Payload/<AppName>.app.IPAForge può essere utilizzato direttamente come singolo file Python:
python3 ipaforge.py --help
Per installare il comando ipaforge nel tuo PATH:
python3 ipaforge.py --install
Per estrarre i file di distribuzione inclusi senza installarli:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
Questo crea una directory framework nella directory di lavoro corrente, normalmente ./MyApp/.
Modifica i file XML leggibili all'interno del framework generato. I dati e i riferimenti dell'archivio originale sono conservati in original/; i file che sono stati convertiti sono tracciati in ipaforge.yml.
ipaforge -b MyApp
L'output predefinito è ./MyApp-signed.ipa nella directory di lavoro corrente.
ipaforge -d MyApp.ipa decoded-framework
ipaforge -b decoded-framework rebuilt.ipa
ipaforge -d, --decode INPUT [OUTPUT]
ipaforge -b, --build INPUT [OUTPUT]
| Opzione | Descrizione |
|---|---|
-d, --decode | Decodifica un IPA in una directory framework modificabile. |
-b, --build | Crea un IPA da una directory framework decodificata. |
-f, --force | Sovrascrive una directory o un file di output esistente. |
--no-meta | Non scrivere ipaforge.yml durante la decodifica. |
--keep-binary | Mantieni tutti i file in formato binario durante la decodifica; disabilita la conversione XML. |
-c 0-9, --compression-level 0-9 | Imposta il livello di compressione ZIP. Predefinito: 9. |
--no-sign | Crea un archivio intenzionalmente non firmato. |
--entitlements FILE | Incorpora gli entitlements nella firma generata. |
--p12 FILE | Firma con un certificato sviluppatore PKCS#12 reale. |
--p12-password PASS | Password per il certificato PKCS#12. |
--provision FILE | Incorpora e utilizza un provisioning profile con --p12. |
-v, --verbose | Abilita il logging di debug. |
-q, --quiet | Stampa solo gli errori. |
--version | Visualizza la versione di IPAForge. |
-h, --help | Visualizza la guida. |
Su Windows, la modalità può essere dedotta automaticamente: un input .ipa viene decodificato e viene creata una directory framework.
La modalità build firma i bundle con il firmatario ad-hoc integrato per impostazione predefinita. Crea dati CodeDirectory per i binari Mach-O e nuovi file _CodeSignature/CodeResources per i bundle applicazione.
Per l'installazione su dispositivi iOS stock, utilizza un certificato sviluppatore reale e un provisioning profile compatibile:
ipaforge -b MyApp \
--p12 developer.p12 \
--p12-password 'your-password' \
--provision embedded.mobileprovision
Per incorporare entitlement personalizzati:
ipaforge -b MyApp --entitlements entitlements.plist
Per creare intenzionalmente un archivio non firmato:
ipaforge -b MyApp --no-sign
Gli archivi non firmati generalmente non possono essere installati da iOS.
Un framework decodificato contiene comunemente:
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
Le directory original/ e ipaforge.yml non vengono mai inclusi nell'IPA ricostruito.
IPAForge classifica i file estratti in categorie tra cui:
native-bplist — liste di proprietà binarie convertite in XML e ricostruite come liste di proprietà binarie.legacy-strings — file .strings classici convertiti in XML e ricostruiti come testo UTF-16.xml-plist — file plist XML esistenti preservati come testo.opaque-compiled — formati Apple compilati proprietari preservati byte per byte.native-binary — eseguibili e librerie Mach-O preservati byte per byte.other-binary — immagini, audio, dati DER e altre risorse preservati byte per byte.| Codice | Significato |
|---|---|
0 | Operazione riuscita. |
1 | Errore di runtime, come un archivio non valido o un errore di firma. |
2 | Errore di utilizzo della riga di comando. |
141 | Output standard chiuso anticipatamente da un consumatore della pipe. |
IPAForge elabora contenuti di archivi non attendibili. Lo strumento applica limiti difensivi ai singoli membri dell'archivio e alla dimensione totale non compressa dell'archivio, ma è comunque consigliabile ispezionare i file sconosciuti in un ambiente isolato.
Non distribuire o installare applicazioni se non si ha il diritto legale di analizzarle e firmarle.
Questo README descrive IPAForge 1.24.0.
Questo progetto è distribuito con licenza MIT - consultare il file LICENSE per i dettagli.