
CLI Python sem dependências para descompactar, inspecionar, editar e reconstruir arquivos .ipa do iOS, convertendo plists e strings para XML enquanto preserva binários Mach-O e pacotes de assinatura.
#IPAForge
IPAForge é uma ferramenta de linha de comando em Python sem dependências para desempacotar, inspecionar, editar e reconstruir arquivos .ipa do iOS.
Ela extrai o arquivo completo, converte formatos editáveis de plist e localização da Apple em XML legível, preserva conteúdo opaco e binário byte a byte, e registra cada conversão em ipaforge.yml para que o framework possa ser reconstruído fielmente.
Use com responsabilidade: O IPAForge destina-se à interoperabilidade, pesquisa de segurança e análise legítima de aplicações. Respeite as leis aplicáveis, licenças e termos de serviço.
.ipa padrão do iOS..strings de texto legado em XML editável..car, .nib e .mom.ipaforge.yml..ipa válido contendo um bundle Payload/<AppName>.app.O IPAForge pode ser usado diretamente como um único arquivo Python:
python3 ipaforge.py --help
Para instalar o comando ipaforge no seu PATH:
python3 ipaforge.py --install
Para extrair os arquivos de distribuição incluídos sem instalá-los:
python3 ipaforge.py --extract
ipaforge -d MyApp.ipa
Isso cria um diretório de framework no diretório de trabalho atual, normalmente ./MyApp/.
Modifique os arquivos XML legíveis dentro do framework gerado. Os dados originais do arquivo e as referências são mantidos em original/; os arquivos que foram convertidos são rastreados em ipaforge.yml.
ipaforge -b MyApp
A saída padrão é ./MyApp-signed.ipa no diretório de trabalho atual.
ipaforge -d MyApp.ipa decoded-framework
ipaforge -b decoded-framework rebuilt.ipa
ipaforge -d, --decode INPUT [OUTPUT]
ipaforge -b, --build INPUT [OUTPUT]
| Opção | Descrição |
|---|---|
-d, --decode | Decodifica um IPA em um diretório de framework editável. |
-b, --build | Constrói um IPA a partir de um diretório de framework decodificado. |
-f, --force | Sobrescreve um diretório ou arquivo de saída existente. |
--no-meta | Não grava ipaforge.yml durante a decodificação. |
--keep-binary | Mantém todos os arquivos binários durante a decodificação; desativa a conversão para XML. |
-c 0-9, --compression-level 0-9 | Define o nível de compressão ZIP. Padrão: 9. |
--no-sign | Constrói um arquivo intencionalmente não assinado. |
--entitlements FILE | Incorpora entitlements na assinatura construída. |
--p12 FILE | Assina com um certificado de desenvolvedor PKCS#12 real. |
--p12-password PASS | Senha para o certificado PKCS#12. |
--provision FILE | Incorpora e usa um perfil de provisionamento com --p12. |
-v, --verbose | Ativa o log de depuração. |
-q, --quiet | Imprime apenas erros. |
--version | Exibe a versão do IPAForge. |
-h, --help | Exibe a ajuda. |
No Windows, o modo pode ser inferido automaticamente: uma entrada .ipa é decodificada e um diretório de framework é construído.
O modo de build assina bundles com o assinador ad-hoc integrado por padrão. Ele cria dados CodeDirectory para binários Mach-O e novos arquivos _CodeSignature/CodeResources para bundles de aplicação.
Para instalação em dispositivos iOS de fábrica, use um certificado de desenvolvedor real e um perfil de provisionamento compatível:
ipaforge -b MyApp \
--p12 developer.p12 \
--p12-password 'your-password' \
--provision embedded.mobileprovision
Para incorporar entitlements personalizados:
ipaforge -b MyApp --entitlements entitlements.plist
Para criar intencionalmente um arquivo não assinado:
ipaforge -b MyApp --no-sign
Arquivos não assinados geralmente não podem ser instalados pelo iOS.
Um framework decodificado normalmente contém:
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
O diretório original/ e o ipaforge.yml nunca são empacotados no IPA reconstruído.
O IPAForge classifica os arquivos extraídos em categorias que incluem:
native-bplist — property lists binários convertidos para XML e reconstruídos como plists binários.legacy-strings — arquivos .strings clássicos convertidos para XML e reconstruídos como texto UTF-16.xml-plist — arquivos plist XML existentes preservados como texto.opaque-compiled — formatos compilados proprietários da Apple preservados byte a byte.native-binary — executáveis e bibliotecas Mach-O preservados byte a byte.other-binary — imagens, áudio, dados DER e outros recursos preservados byte a byte.| Código | Significado |
|---|---|
0 | Operação bem-sucedida. |
1 | Erro de execução, como um arquivo inválido ou falha na assinatura. |
2 | Erro de uso da linha de comando. |
141 | Saída padrão fechada prematuramente por um consumidor de pipe. |
O IPAForge processa conteúdos de arquivos não confiáveis. A ferramenta aplica limites defensivos a membros individuais do arquivo e ao tamanho total descompactado do arquivo, mas você ainda deve inspecionar arquivos desconhecidos em um ambiente isolado.
Não distribua ou instale aplicações a menos que você tenha o direito legal de analisá-las e assiná-las.
Adicione o texto da licença do projeto aqui antes de publicar no GitHub. Se nenhuma licença for incluída, os usuários do GitHub não recebem automaticamente permissão para usar, modificar ou redistribuir o código.
Issues e pull requests são bem-vindos. Por favor, inclua:
Este README descreve o IPAForge 1.24.0.