
CLI de Python sin dependencias para desempaquetar, inspeccionar, editar y reconstruir archivos .ipa de iOS, convirtiendo plists y cadenas a XML mientras preserva los binarios Mach-O y los bundles de firma.
#IPAForge
IPAForge es una herramienta de línea de comandos de Python sin dependencias para desempaquetar, inspeccionar, editar y reconstruir archivos .ipa de iOS.
Extrae el archivo completo, convierte los formatos editables de plist y localización de Apple en XML legible, preserva el contenido opaco y binario byte por byte, y registra cada conversión en ipaforge.yml para que el framework pueda reconstruirse fielmente.
Úselo de forma responsable: IPAForge está destinado a la interoperabilidad, la investigación de seguridad y el análisis legítimo de aplicaciones. Respete las leyes, licencias y términos de servicio aplicables.
.ipa estándar de iOS..strings de texto heredados en XML editable..car, .nib y .mom.ipaforge.yml..ipa válido que contenga un bundle Payload/<AppName>.app.IPAForge puede usarse directamente como un único archivo de Python:
python3 ipaforge.py --help
Para instalar el comando ipaforge en tu PATH:
python3 ipaforge.py --install
Para extraer los archivos de distribución incluidos sin instalarlos:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
Esto crea un directorio de framework en el directorio de trabajo actual, normalmente ./MyApp/.
Modifica los archivos XML legibles dentro del framework generado. Los datos y referencias del archivo original se conservan en original/; los archivos que se convirtieron se registran en ipaforge.yml.
ipaforge -b MyApp
La salida predeterminada es ./MyApp-signed.ipa en el directorio de trabajo actual.
ipaforge -d MyApp.ipa decoded-framework
ipaforge -b decoded-framework rebuilt.ipa
ipaforge -d, --decode INPUT [OUTPUT]
ipaforge -b, --build INPUT [OUTPUT]
| Opción | Descripción |
|---|---|
-d, --decode | Decodifica un IPA en un directorio de framework editable. |
-b, --build | Construye un IPA a partir de un directorio de framework decodificado. |
-f, --force | Sobrescribe un directorio o archivo de salida existente. |
--no-meta | No escribir ipaforge.yml durante la decodificación. |
--keep-binary | Mantener todos los archivos en binario durante la decodificación; deshabilitar la conversión XML. |
-c 0-9, --compression-level 0-9 | Establecer el nivel de compresión ZIP. Predeterminado: 9. |
--no-sign | Construir un archivo intencionalmente sin firmar. |
--entitlements FILE | Incrustar los entitlements en la firma construida. |
--p12 FILE | Firmar con un certificado de desarrollador PKCS#12 real. |
--p12-password PASS | Contraseña para el certificado PKCS#12. |
--provision FILE | Incrustar y usar un perfil de aprovisionamiento con --p12. |
-v, --verbose | Habilitar el registro de depuración. |
-q, --quiet | Mostrar solo errores. |
--version | Mostrar la versión de IPAForge. |
-h, --help | Mostrar la ayuda. |
En Windows, el modo se puede inferir automáticamente: una entrada .ipa se decodifica y se construye un directorio de framework.
El modo de construcción firma los bundles con el firmador ad-hoc integrado de forma predeterminada. Crea datos de CodeDirectory para binarios Mach-O y archivos _CodeSignature/CodeResources nuevos para los bundles de aplicación.
Para la instalación en dispositivos iOS de fábrica, use un certificado de desarrollador real y un perfil de aprovisionamiento compatible:
ipaforge -b MyApp \
--p12 developer.p12 \
--p12-password 'your-password' \
--provision embedded.mobileprovision
Para incrustar derechos personalizados:
ipaforge -b MyApp --entitlements entitlements.plist
Para crear intencionadamente un archivo sin firmar:
ipaforge -b MyApp --no-sign
Las aplicaciones sin firmar generalmente no pueden instalarse en iOS.
Un framework decodificado comúnmente contiene:
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
El directorio original/ y ipaforge.yml nunca se empaquetan en el IPA reconstruido.
IPAForge clasifica los archivos extraídos en categorías que incluyen:
native-bplist — listas de propiedades binarias convertidas a XML y reconstruidas como listas de propiedades binarias.legacy-strings — archivos .strings clásicos convertidos a XML y reconstruidos como texto UTF-16.xml-plist — archivos plist XML existentes conservados como texto.opaque-compiled — formatos propietarios compilados de Apple conservados byte por byte.native-binary — ejecutables y bibliotecas Mach-O conservados byte por byte.other-binary — imágenes, audio, datos DER y otros recursos conservados byte por byte.| Código | Significado |
|---|---|
0 | Operación exitosa. |
1 | Error en tiempo de ejecución, como un archivo inválido o un fallo de firma. |
2 | Error de uso de la línea de comandos. |
141 | Salida estándar cerrada anticipadamente por un consumidor de tubería. |
IPAForge procesa contenidos de archivos no confiables. La herramienta aplica límites defensivos a los miembros individuales del archivo y al tamaño total descomprimido del archivo, pero aun así deberías inspeccionar archivos desconocidos en un entorno aislado.
No distribuyas ni instales aplicaciones a menos que tengas el derecho legal de analizarlas y firmarlas.
Este README describe IPAForge 1.24.0.
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.