
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 decomprimere, 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 responsabilmente: IPAForge è destinato all'interoperabilità, alla ricerca sulla sicurezza e all'analisi legittima delle applicazioni. Rispettare le leggi applicabili, le licenze e i termini di servizio.
.ipa standard..strings di testo legacy 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 | Costruisce 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 binari durante la decodifica; disabilita la conversione XML. |
-c 0-9, --compression-level 0-9 | Imposta il livello di compressione ZIP. Predefinito: 9. |
--no-sign | Costruisce un archivio intenzionalmente non firmato. |
--entitlements FILE | Incorpora gli entitlement nella firma costruita. |
--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 costruita 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 dell'applicazione.
Per l'installazione su dispositivi iOS stock, utilizzare 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
La directory original/ e ipaforge.yml non vengono mai inseriti nell'IPA ricostruito.
IPAForge classifica i file estratti in categorie tra cui:
native-bplist — property list binari convertiti in XML e ricostruiti come plist binari.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 preservate 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 archivio non attendibili. Lo strumento applica limiti difensivi ai singoli membri dell'archivio e alla dimensione totale dell'archivio non compresso, ma è comunque consigliabile ispezionare i file sconosciuti in un ambiente isolato.
Non distribuire o installare applicazioni a meno che non si abbia il diritto legale di analizzarle e firmarle.
Aggiungi qui il testo della licenza del progetto prima di pubblicare su GitHub. Se non viene inclusa alcuna licenza, gli utenti di GitHub non ricevono automaticamente il permesso di usare, modificare o ridistribuire il codice.
Issue e pull request sono benvenute. Si prega di includere:
Questo README descrive IPAForge 1.24.0.