Virtualizando iOS no Apple Silicon
Parte 0: território desconhecido?
- Projeto vma2pwn: projeto para criar uma cadeia de boot do macOS vma2 modificável para máquinas virtuais convidadas do macOS, servindo como etapa preparatória para a virtualização de iOS.
- Possibilidade de virtualização do iOS: com a transição para Apple Silicon e a introdução do Mac Catalyst, os sistemas operacionais iOS e macOS ficaram ainda mais próximos, levantando a questão de saber se é possível virtualizar o iOS.
- Pesquisas existentes: são citados como trabalhos relacionados o produto de nuvem de iPhone virtual da Corellium, o qemu-t8030 e o blog de Zhuowei Zhang.
Parte I: começando + novas descobertas
- Recursos da pilha de Virtualization da Apple: foi descoberta uma função de assinatura de dados arbitrários para máquinas virtuais.
- Menor necessidade do vma2pwn: por meio da chamada
_setProductionModeEnabled(false), é possível configurar o dispositivo virtual nos modos "seguro" e "não produção".
- Estratégia para executar iOS: reutiliza-se a cadeia de boot do macOS 12.0.1 e substitui-se pela imagem de sistema do iOS 15.0.2 para minimizar as alterações no processo de inicialização.
Parte II: inferno dos patches
- Patch no kernel: são necessários patches para contornar a verificação de assinatura, além de modificar o sistema para ignorar a verificação de
PLATFORM_IOS e assim executar binários do iOS.
- Problema com system keybag: devido à incompatibilidade do system keybag, o PreBoard.app exibe a mensagem "deslize para cima para atualizar".
- Incompatibilidade no tamanho da estrutura IOMFB: foi resolvido um problema de kernel panic causado pela diferença de tamanho entre frameworks de sistema do iOS e o kernel do macOS.
- Patches no sistema: são necessários patches tanto no ramdisk de restauração quanto nos arquivos de sistema do iOS, que encerram a execução quando rodam sem assinatura.
Parte III: futuro
- Resolução do problema do system keybag: são necessários mais patches e um entendimento mais profundo do sistema e do kernel do iOS.
- Funcionalidade de toque: não foi confirmado se o toque funciona, mas é possível enviar eventos de toque usando APIs privadas do
Virtualization.framework.
Resumo do GN⁺
- Este texto oferece uma exploração técnica aprofundada de como virtualizar o iOS no Apple Silicon.
- À medida que a integração entre iOS e macOS acelera, este projeto desempenha um papel importante na exploração da interoperabilidade entre os dois sistemas operacionais.
- Este projeto exige muito tempo e esforço, e ainda requer pesquisa e desenvolvimento adicionais.
- Um projeto com funcionalidade semelhante é o produto de nuvem de iPhone virtual da Corellium.
1 comentários
Comentários do Hacker News
A Corellium venceu a disputa judicial e agora pode alugar VMs em nuvem de iOS para fins de pesquisa em segurança
Há quem espere que o próximo desafio seja descobrir como instalar o macOS em um iPad
Fica a sensação de que a Apple não transforma o Simulator em um Emulator porque não quer que as pessoas investiguem a fundo as entranhas do iOS
De acordo com o perfil do autor no GitHub, ele realizou um trabalho muito impressionante para um recém-formado em ciência da computação
A pessoa que criou o qemu-t8030 conseguiu executar o springboard, mas não publicou o código. Seria ótimo se esse progresso pudesse ser combinado com o projeto atual
Fugindo um pouco do assunto, fica a curiosidade se alguém já conseguiu virtualizar o macOS ARM em x86-64
A Apple já oferece um simulador de iOS no XCode. Fica a dúvida sobre que vantagem este projeto tem em relação ao que a Apple oferece
A discussão sobre este tema está acontecendo no servidor de Discord nick's funny device emporium