In questo articolo Indice dei contenuti 2 sezioni
Far girare iOS su Android usando il vero sistema operativo di Apple, e non una semplice interfaccia che ne imita l’aspetto, sembrava un’idea da fantascienza. Il progetto HackiOS però ha fatto un passo concreto in questa direzione. Il gruppo di sviluppatori ha pubblicato il codice sorgente che serve ad avviare iOS 16.5 su un POCO X5 Pro 5G, grazie a una versione modificata del kernel Apple e a una serie di componenti scritti apposta per l’hardware Qualcomm. La prima release pubblica si chiama HackiOS v0.1.0 e comprende patch, strumenti di compilazione, loader e immagini binarie. Non si tratta di una ROM da usare tutti i giorni ma di un esperimento di portabilità che ora altri ricercatori possono studiare e, almeno in teoria, riprodurre.
Non è il primo tentativo di abbattere il muro tra hardware e sistemi mobili. Nel 2010 il progetto iDroid aveva provato a far funzionare Android sui primi iPhone e dieci anni dopo Project Sandcastle aveva portato il robottino verde su alcuni dispositivi Apple. Con HackiOS il percorso si inverte, con l’obiettivo di adattare i componenti fondamentali di iOS a un telefono che non ha né i chip, né i driver proprietari, né le protezioni hardware pensate a Cupertino.
Il vero kernel XNU su uno Snapdragon
Qui non c’è nessun launcher Android travestito da iPhone. Gli sviluppatori avviano il kernel XNU legato a iOS 16.5 e a Darwin 22.5.0, e poi fanno partire i componenti originali dello spazio utente Apple. XNU è il cuore dei sistemi della Mela e unisce elementi del microkernel Mach, parti derivate da BSD e l’infrastruttura IOKit per la gestione delle periferiche. Il suo codice è pubblico, ma questo non rende aperto l’intero sistema perché driver, framework e servizi restano proprietari. Il team quindi non ha riscritto iOS, si è limitato ad adattare XNU al telefono Xiaomi e a costruire i pezzi mancanti per far dialogare il software originale con un hardware mai supportato ufficialmente.
La scelta del dispositivo non è casuale. Lo Snapdragon 778G usa l’architettura ARM64, la stessa dei processori Apple Silicon, anche se firmware, periferiche e modalità di avvio sono diversi. Il risultato mostrato comprende schermata di blocco, sblocco con gesture, Home e diverse app originali come Impostazioni, Calendario, Orologio, Foto, Note e Safari. Sul fronte dell’avvio, un telefono Qualcomm non può caricare direttamente il kernel Apple, così il progetto passa da un porting UEFI basato su Mu Silicium e da un’applicazione EFI chiamata xnuloader. Tutto parte dal comando fastboot boot, che carica in memoria un’immagine temporanea senza scriverla nelle partizioni. Il loader resta residente, gestisce un collegamento USB con il computer e raccoglie i messaggi diagnostici del kernel.
I limiti di HackiOS e la prova con QEMU
Pensare di trasformare uno smartphone Android in un iPhone a basso costo sarebbe fuori strada. Il modem non funziona, quindi niente chiamate né dati mobili, e manca anche il Bluetooth. Il telefono non gestisce la ricarica mentre gira il kernel modificato e continua a consumare batteria. Il nodo più delicato riguarda il Secure Enclave, il sottosistema che Apple usa per proteggere chiavi crittografiche e operazioni sensibili, e che il POCO X5 Pro semplicemente non possiede. Ne derivano problemi con l’account Apple e con i servizi legati alla catena di fiducia originale. Il processo FairPlay si interrompe e di conseguenza App Store e accesso con account Apple non sono supportati. Il progetto introduce componenti sostitutivi per corecrypto, AppleKeyStore, AMFI e le politiche Sandbox, ma registrazione video e Live Photo non funzionano, la grafica è incompleta e le sessioni hanno una durata prestabilita.
Per sperimentare non serve per forza il telefono. Gli autori hanno preparato un profilo QEMU aarch64 basato sulla macchina virtuale virt, utilizzabile su Linux. Occorrono un computer con architettura x86 a 64 bit, circa 12 GB liberi su disco, almeno 4 GB di RAM, oltre a Python, Git, GCC e una versione di QEMU capace di emulare ARM64. Per l’estrazione dei file APFS viene consigliato 7Zip nella versione 23 o successiva. Dopo aver clonato il repository principale, lo script common/setup.sh prepara l’area di lavoro, mentre ios165/fetch.sh scarica dai server Apple il firmware IPSW di iOS 16.5, circa 7,4 GB, dato che i file del sistema non sono inclusi nei repository pubblici. Con common/build.sh e common/run.sh si avvia la sessione virtuale e la schermata di blocco dovrebbe comparire in due o tre minuti. Il mouse simula il tocco e alcuni comandi dedicati generano gesture e catturano le schermate. Chi vuole compilare XNU in autonomia trova le patch nella cartella xnu/ e può lavorare su Linux con Clang e LLD, appoggiandosi a Theos e all’SDK iPhoneOS 16.5.
Fonte: TecnoAndroid


