
ipsw v3.1.716
Canivete Suíço de Pesquisa para iOS/macOS
ipsw
Canivete suíço para pesquisa em iOS/macOS
ipsw é um conjunto de ferramentas de linha de comando para pesquisa e engenharia reversa de firmware da Apple. Baixe e descompacte IPSWs e OTAs, inspecione binários Mach-O e caches compartilhados do dyld, analise kernelcaches e trabalhe com dispositivos iOS conectados.
Agent skill · Instalação · Exemplos de CLI · Documentação
Use o ipsw com um agente de IA
Comece com o ipsw-skill se você estiver trabalhando no Claude Code, Codex, Gemini CLI ou outro agente que suporte skills. Ele fornece ao agente referências de comandos e fluxos de trabalho para extração de firmware, análise de binários e pesquisa em plataformas Apple.
Instale a CLI ipsw e depois adicione a skill:
npx skills add https://github.com/blacktop/ipsw-skill --skill ipsw
Você pode então solicitar uma tarefa em linguagem natural. Por exemplo:
Baixe o IPSW mais recente para o iPhone 15 Pro e extraia seu kernelcache.
Faça o dump dos cabeçalhos Objective-C do SpringBoardServices a partir deste cache compartilhado do dyld.
Compare os KEXTs nestes dois kernelcaches.
O README da skill contém instruções de configuração para agentes individuais, incluindo o plugin do Claude Code e a extensão do Gemini CLI.
Instalação
macOS
O tap do Homebrew do mantenedor inclui a build com extras:
brew install blacktop/tap/ipsw
A fórmula principal do Homebrew também está disponível: brew install ipsw.
Linux
sudo snap install ipsw
Windows
scoop bucket add blacktop https://github.com/blacktop/scoop-bucket.git
scoop install blacktop/ipsw
Você também pode baixar binários do GitHub Releases. Consulte o guia de instalação para outros pacotes e dependências opcionais. Alguns comandos dependem do sistema operacional hospedeiro ou da variante de build; o suporte ao Frida, por exemplo, tem uma build separada.
O que você pode fazer
| Área | Ferramentas |
|---|---|
| Firmware | Baixar IPSWs, OTAs, instaladores do macOS, Xcode e KDKs; extrair componentes e comparar builds |
| Mach-O | Inspecionar load commands, símbolos, assinaturas e entitlements; desmontar código ARM64 |
| Caches compartilhados do dyld | Encontrar símbolos e referências cruzadas, extrair dylibs, fazer dump de cabeçalhos Objective-C e inspecionar metadados Swift |
| Kernel | Extrair KEXTs, inspecionar syscalls e símbolos e comparar kernelcaches |
| Componentes de firmware | Analisar IMG4, descriptografar arquivos AEA e inspecionar firmware do iBoot e de coprocessadores |
| Dispositivos | Listar dispositivos e apps, transferir arquivos com AFC, capturar logs e montar imagens de desenvolvedor |
| App Store Connect | Gerenciar certificados, bundle IDs, dispositivos e perfis de provisionamento |
| Pesquisa | Simbolizar logs de crash, depurar via SSH, rastrear com Frida e descompilar com um LLM |
Exemplos de CLI
Substitua os caminhos de arquivo de exemplo pelos seus. Execute ipsw --help ou adicione --help a qualquer subcomando para ver suas opções.
Baixar e extrair firmware
# Download the latest IPSW for iPhone 15 Pro
ipsw download ipsw --device iPhone16,1 --latest
# Inspect a local IPSW and extract its kernelcache
ipsw info /path/to/firmware.ipsw
ipsw extract --kernel /path/to/firmware.ipsw
# Compare two firmware builds
ipsw diff /path/to/old.ipsw /path/to/new.ipsw
Explorar um cache compartilhado do dyld
ipsw dyld info /path/to/dyld_shared_cache_arm64e
# Extract Foundation for use in other tools
ipsw dyld extract /path/to/dyld_shared_cache_arm64e Foundation
# Dump headers directly from the cache
ipsw class-dump /path/to/dyld_shared_cache_arm64e SpringBoardServices --headers -o headers
Use o cache diretamente para análise Objective-C: dylibs extraídas ainda podem referenciar metadados armazenados em outro lugar no cache.
Inspecionar binários e kernelcaches
# Select an architecture explicitly for universal binaries
ipsw macho info /path/to/binary --arch arm64e
ipsw macho disass /path/to/binary --arch arm64e --symbol _main
# Search a directory of binaries for an imported symbol
ipsw macho search /path/to/binaries --import 'CCCrypt'
# List KEXTs, then extract one by its full bundle ID
ipsw kernel kexts /path/to/kernelcache
ipsw kernel extract /path/to/kernelcache com.apple.driver.ASIOKit -o kexts
Trabalhar com um dispositivo conectado
ipsw idev list
ipsw idev apps ls
ipsw idev afc ls /
ipsw idev syslog
Descompilar com um LLM
Os comandos macho disass e dyld disass podem enviar o disassembly para um provedor de LLM configurado com --dec. Consulte o guia do descompilador para configuração do provedor, seleção de modelo e exemplos.
Configuração e automação
A CLI lê a configuração YAML de ~/.config/ipsw/config.yaml; use --config para selecionar outro arquivo. Consulte config.example.yml e o guia de configuração para configurações e variáveis de ambiente.
Para scripts, selecione uma arquitetura com --arch ao abrir binários universais e use um caminho completo de dylib quando um nome curto for ambíguo. Os comandos que suportam --json documentam isso em sua ajuda.
O daemon separado ipswd expõe uma API REST para automação. Consulte a referência da API.
Documentação e comunidade
- Agent skill e configuração
- Guias e referência de comandos
- Diffs de firmware pré-calculados
- GitHub Discussions
- Issue tracker
- DeepWiki, um guia gerado por IA para a base de código
Ao relatar um bug, inclua ipsw version, o comando executado e a build de firmware ou o tipo de arquivo relevante. Oculte informações pessoais de logs e relatórios de crash.
Compilar e contribuir
Compilar a partir do código-fonte requer Go 1.26 ou posterior e um toolchain C para CGO:
git clone https://github.com/blacktop/ipsw.git
cd ipsw
make build
Consulte CONTRIBUTING.md para diretrizes de desenvolvimento e contribuição.
Créditos
Agradecimentos a Jonathan Levin por suas ferramentas e documentação sobre os internals do iOS, à comunidade de pesquisa de segurança da Apple e a todos que contribuem com código, relatórios de bugs e pesquisa.