Ejecutando un iPhone virtual en Apple Silicon con vphone-cli
Si alguna vez has desarrollado para iOS o has profundizado en los servicios del sistema de Apple, probablemente te hayas encontrado con las limitaciones del simulador estándar de Xcode. El simulador compila binarios para la arquitectura del host y los ejecuta en un entorno especial de macOS. Esto funciona bien para la creación rápida de prototipos de interfaz, pero no hay un kernel Darwin real para iPhone, no hay un aislamiento de procesos adecuado, ni un conjunto de demonios del sistema. Hasta hace poco, probar componentes de bajo nivel o ajustes requería mantener una pila de dispositivos de prueba sobre tu escritorio.
La situación cambió cuando Apple lanzó el entorno de Private Cloud Compute (PCC) para investigadores de seguridad en macOS 15 Sequoia. El desarrollador Lakr233 aprovechó esta infraestructura y escribió vphone-cli. Esta es una utilidad de consola que construye y ejecuta una máquina virtual completa con iOS real directamente en un Mac con Apple Silicon.
Cómo funciona internamente
El proyecto está construido sobre el framework de sistema Virtualization.framework de Apple con el tipo de virtualización privada PV=3. La utilidad toma dos imágenes IPSW oficiales: el firmware estándar del iPhone y la imagen CloudOS. Los scripts luego las fusionan, parchean la cadena de arranque, realizan la recuperación DFU y aplican una partición de sistema personalizada.
El resultado es una instancia genuina de iOS como invitado con su propia dirección de red, acceso SSH y conectividad VNC.
Preparación del host
Ejecutar el proyecto no es algo que se haga con un clic. Apple protege estrictamente sus mecanismos internos de virtualización, así que necesitarás relajar las restricciones del sistema host.
Necesitarás un Mac de la serie M con macOS 15 o posterior. Primero, desactiva SIP o habilita los sistemas de investigación para invitados. Para hacer esto, reinicia tu Mac en modo Recuperación (mantén presionado el botón de encendido durante el inicio) y abre Terminal:
01Después de reiniciar en modo normal, pasa un parámetro del kernel para desactivar AMFI:
02Si prefieres no desactivar las verificaciones del sistema completo, el autor proporciona una alternativa. Puedes mantener SIP en modo depuración y lanzar la utilidad a través de un binario auxiliar 06 que elimina selectivamente las restricciones.
Instala las utilidades principales a través de las dependencias de Homebrew:
03Creando tu primera VM
Todo el proceso de creación de la VM está automatizado con un solo comando. La utilidad descarga los archivos IPSW necesarios, parchea el bootloader, crea el paquete y realiza el procedimiento de configuración inicial:
04El indicador 07 (o 08) establece la profundidad de modificación del firmware. El repositorio tiene cinco variantes:
- 09 contiene solo 4 parches y deja los mecanismos de seguridad estándar de iOS habilitados.
- 00 incluye 42 parches que omiten AMFI, la verificación de firma del Signed System Volume (SSV) y TXM.
- 01 añade omisiones para verificaciones de entitlements y bloqueos de depuración.
- 02 aplica 113 parches e instala inmediatamente el gestor de paquetes Sileo junto con TrollStore.
- 03 extiende la versión jailbreak con parches que ocultan el hecho de que se está ejecutando dentro de una máquina virtual.
El perfil 04 es adecuado para la mayoría de experimentos. Una vez que se completa la creación, la imagen arranca y puedes conectarte a ella.
Conectando y trabajando
El control del dispositivo virtual se divide en dos canales: terminal y gráficos.
El acceso al shell usa SSH en el puerto 22222:
05La contraseña predeterminada para el usuario mobile en builds con jailbreak es 05. Si seleccionaste el perfil 06 o 07, conéctate como usuario 08.
La pantalla gráfica se muestra a través del servidor VNC integrado en el puerto 5901. Ábrelo usando la aplicación Screen Sharing integrada de macOS ingresando 09.
La configuración inicial de iOS tiene algunos detalles peculiares. En la pantalla que dice "Press home to continue", haz clic derecho en la ventana de VNC: esto emula presionar el botón Físico de Inicio. Al seleccionar una región durante la configuración inicial, es mejor especificar USA. Si eliges países de la UE o Japón, el sistema ejecutará verificaciones regulatorias adicionales que actualmente fallan en el entorno virtual.
La instalación de aplicaciones de terceros en formato 0a o 0b se realiza simplemente arrastrando el archivo a la ventana de la máquina virtual en ejecución.
Automatización y control basado en sockets
El autor incorporó capacidades de control programático. Se crea un socket Unix 0c dentro del paquete de la VM. A través de él, puedes enviar comandos de toque en pantalla, gestos, eventos de botones de hardware y datos del portapapeles.
Cada acción a través del socket devuelve una captura de pantalla del estado actual de la pantalla. Esto es útil para quienes escriben pruebas de integración de extremo a extremo o conectan modelos de lenguaje para exploración de aplicaciones. El ecosistema del proyecto ya tiene un servidor listo 0d que envuelve este socket en el Model Context Protocol.
Consideraciones importantes
El proyecto está en desarrollo activo y tiene algunos bordes irregulares.
La virtualización anidada no está soportada a nivel de hardware. No puedes ejecutar 0e dentro de otra máquina virtual de macOS (por ejemplo, en un runner en la nube o Tart), por lo que se requiere un Mac físico.
A veces, durante la instalación de firmware personalizado, el proceso se queda colgado en la etapa de re-firma de binarios del sistema con la utilidad 0f. Esto está relacionado con un error en la fórmula estable de Homebrew donde la función de manejo de valores nulos entra en un bucle infinito. La solución es reconstruir el paquete desde la rama de desarrollo a través de 010.
Si las aplicaciones basadas en iOS 18 fallan con el error 011, reconstruye los parches con el indicador 012.
A quién le será útil este proyecto
La utilidad es principalmente útil para ingenieros inversos y especialistas en seguridad de aplicaciones móviles. Elimina la necesidad de comprar dispositivos separados para hacer jailbreak y permite reiniciar rápidamente el estado del sistema a una instantánea limpia a través de clonación APFS.
Para desarrolladores de tweaks e ingenieros de demonios del sistema de bajo nivel, el proyecto proporciona un entorno de depuración conveniente sin el riesgo de convertir un teléfono real en un ladrillo. Si tienes un Mac con Apple Silicon disponible y un interés en los aspectos internos de iOS, esta herramienta definitivamente vale la pena implementar y explorar.
Proyectos relacionados