
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.
Úsalo de forma responsable: IPAForge está destinado a la interoperabilidad, la investigación de seguridad y el análisis legítimo de aplicaciones. Respeta las leyes, licencias y términos de servicio aplicables.
.ipa estándar de iOS..strings de texto heredados en XML editable..car, .nib y ..momipaforge.yml..ipa válido que contenga un bundle Payload/<AppName>.app.IPAForge puede usarse directamente como un único archivo 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 | Compila un IPA desde un directorio de framework decodificado. |
-f, --force | Sobrescribe un directorio o archivo de salida existente. |
--no-meta | No escribe ipaforge.yml durante la decodificación. |
--keep-binary | Mantiene todos los archivos en binario durante la decodificación; desactiva la conversión a XML. |
-c 0-9, --compression-level 0-9 | Establece el nivel de compresión ZIP. Predeterminado: 9. |
--no-sign | Compila un archivo intencionalmente sin firmar. |
--entitlements FILE | Incrusta entitlements en la firma compilada. |
--p12 FILE | Firma con un certificado de desarrollador PKCS#12 real. |
--p12-password PASS | Contraseña para el certificado PKCS#12. |
--provision FILE | Incrusta y usa un perfil de aprovisionamiento con --p12. |
-v, --verbose | Activa el registro de depuración. |
-q, --quiet | Imprime solo errores. |
--version | Muestra la versión de IPAForge. |
-h, --help | Muestra la ayuda. |
En Windows, el modo puede inferirse automáticamente: una entrada .ipa se decodifica y se compila un directorio de framework.
El modo de compilación firma los bundles con el firmador ad-hoc integrado de forma predeterminada. Crea datos CodeDirectory para binarios Mach-O y archivos _CodeSignature/CodeResources nuevos para los bundles de aplicación.
Para instalar en dispositivos iOS de fábrica, usa 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 entitlements personalizados:
ipaforge -b MyApp --entitlements entitlements.plist
Para crear intencionalmente un archivo sin firmar:
ipaforge -b MyApp --no-sign
Los archivos sin firmar generalmente no pueden ser instalados por iOS.
Un framework decodificado normalmente 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 plists binarios.legacy-strings — archivos .strings clásicos convertidos a XML y reconstruidos como texto UTF-16.xml-plist — archivos plist XML existentes preservados como texto.opaque-compiled — formatos compilados propietarios de Apple preservados byte por byte.native-binary — ejecutables y bibliotecas Mach-O preservados byte por byte.other-binary — imágenes, audio, datos DER y otros recursos preservados 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 | La salida estándar se cerró anticipadamente por un consumidor de tubería. |
IPAForge procesa contenido 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.
Agrega el texto de la licencia del proyecto aquí antes de publicarlo en GitHub. Si no se incluye una licencia, los usuarios de GitHub no reciben automáticamente permiso para usar, modificar o redistribuir el código.
Las issues y pull requests son bienvenidas. Por favor incluye:
Este README describe IPAForge 1.24.0.