>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Swift

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.

poc

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:

￸0￸1

Después de reiniciar en modo normal, pasa un parámetro del kernel para desactivar AMFI:

￸0￸2

Si 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 ￸0￸6 que elimina selectivamente las restricciones.

Instala las utilidades principales a través de las dependencias de Homebrew:

￸0￸3

Creando 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:

￸0￸4

El indicador ￸0￸7 (o ￸0￸8) establece la profundidad de modificación del firmware. El repositorio tiene cinco variantes:

  • ￸0￸9 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:

￸0￸5

La 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 ￸01￸0.

Si las aplicaciones basadas en iOS 18 fallan con el error ￸01￸1, reconstruye los parches con el indicador ￸01￸2.

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