iOS gira davvero su uno smartphone Android: come funziona HackiOS

HackiOS permette di avviare iOS 16.5 su POCO X5 Pro e in ambiente QEMU. Il codice sorgente è ora pubblico: ecco come funziona il porting del kernel XNU, quali componenti Apple sono compatibili e quali limiti rimangono.

Far funzionare iOS su uno smartphone Android, utilizzando il vero sistema operativo Apple anziché un’interfaccia grafica che ne riproduce l’aspetto, sembrava quasi fantascienza. Il progetto HackiOS (repository GitHub) compie però un passo importante: il gruppo di sviluppatori ha pubblicato il codice sorgente necessario per avviare iOS 16.5 su un terminale POCO X5 Pro 5G, sfruttando una versione modificata del kernel Apple e una serie di componenti sviluppati appositamente per l’hardware Qualcomm.

Gli sviluppatori hanno distribuito la prima versione pubblica, identificata come HackiOS v0.1.0, rendendo disponibili patch, strumenti di compilazione, loader e immagini binarie. Non siamo ancora davanti a una ROM alternativa utilizzabile quotidianamente, ma a un esperimento di portabilità del sistema Apple che ora può essere esaminato e, almeno in linea di principio, riprodotto da altri ricercatori.

La vicenda richiama tentativi precedenti di superare la separazione tra hardware e sistemi operativi mobili. Nel 2010 il progetto iDroid aveva esplorato l’esecuzione di Android sui primi iPhone; dieci anni dopo, Project Sandcastle aveva portato Android su alcuni dispositivi Apple. HackiOS si propone di adattare i componenti fondamentali di iOS a un telefono privo dei chip, dei driver proprietari e delle funzionalità di sicurezza hardware progettate da Apple.

HackiOS: iOS su Android

HackiOS porta il vero iOS 16.5 su un POCO X5 Pro

HackiOS non utilizza un launcher Android e non cerca di ricostruire graficamente le schermate di un iPhone. Gli sviluppatori dichiarano di avviare il kernel XNU associato a iOS 16.5 e Darwin 22.5.0, per poi eseguire i componenti originali dello spazio utente Apple.

XNU è il cuore dei sistemi operativi Apple e combina elementi del microkernel Mach, componenti derivati da BSD e l’infrastruttura IOKit per la gestione dei dispositivi. Il suo codice sorgente è pubblicamente disponibile attraverso il repository ufficiale Apple, ma la pubblicazione del kernel non significa affatto che il sistema della Mela sia aperto. Driver, framework, servizi di sistema e componenti necessari al funzionamento degli iPhone rimangono proprietari.

Il gruppo di ricercatori che ha ideato HackiOS non ha riscritto iOS: ha adattato XNU all’hardware del POCO X5 Pro e realizzato le parti necessarie affinché i programmi originali Apple possano comunicare con dispositivi fisici per i quali non esiste un supporto ufficiale.

Il telefono scelto monta un SoC Snapdragon 778G con architettura ARM64, una piattaforma che condivide l’architettura del set di istruzioni con i processori Apple Silicon, pur avendo periferiche, firmware e modalità di avvio differenti. La compatibilità ARM64 elimina la necessità di tradurre l’intero codice macchina delle applicazioni, ma non risolve le differenze tra i rispettivi sistemi.

Il risultato dichiarato dagli sviluppatori comprende la schermata di blocco, lo sblocco tramite gesture, la schermata Home e l’avvio di diverse applicazioni originali, tra cui Impostazioni, Calendario, Orologio, Foto, Note e Safari. Il percorso di avvio raggiunge quindi componenti reali di iOS, non semplici imitazioni.

Come funziona l’avvio di iOS su hardware Android

Uno degli ostacoli principali riguarda la catena di avvio. Un telefono Android con processore Qualcomm non dispone della stessa struttura di boot di un iPhone e non può caricare direttamente il kernel Apple utilizzando il proprio ambiente software ordinario.

HackiOS risolve il problema mediante un porting UEFI basato su Mu-Silicium, progetto collegato al lavoro di adattamento del firmware UEFI ai dispositivi ARM. Il sistema avvia un’applicazione EFI personalizzata chiamata xnuloader, incaricata di preparare l’ambiente di esecuzione e trasferire il controllo a XNU.

La sequenza parte da fastboot boot, comando che permette di caricare temporaneamente un’immagine di avvio nella memoria del dispositivo senza necessariamente scriverla nelle partizioni di sistema. Il firmware UEFI inizializza le componenti indispensabili, quindi xnuloader prepara il kernel, le immagini del file system e gli argomenti di avvio.

Il loader, che resta residente in memoria, gestisce un collegamento USB con il computer, raccoglie i messaggi diagnostici e permette di recuperare le informazioni prodotte dal kernel al termine della sessione. Gli sviluppatori hanno anche predisposto un meccanismo per restituire il controllo al loader senza eseguire necessariamente un normale riavvio di iOS.

L’ambiente non dipende esclusivamente dal dispositivo fisico. Gli autori hanno predisposto anche un profilo QEMU aarch64, basato sulla macchina virtuale virt, che consente di eseguire lo stesso progetto su un computer Linux. Disporre di una piattaforma virtuale rende più accessibili il debugging, la raccolta dei log e le verifiche ripetibili.

Perché HackiOS non può ancora sostituire Android

Nonostante i risultati ottenuti, esistono limitazioni che impediscono di considerare HackiOS un’alternativa concreta ad Android o un modo economico per trasformare uno smartphone Qualcomm in un iPhone.

Il modem cellulare non funziona: niente chiamate tradizionali o traffico dati attraverso la rete mobile; manca anche il supporto Bluetooth. Il telefono, inoltre, non riesce a gestire correttamente la ricarica durante l’esecuzione del kernel modificato e continua quindi a consumare la propria batteria.

Un limite ancora più delicato riguarda il Secure Enclave, il sottosistema hardware di sicurezza che Apple utilizza per proteggere chiavi crittografiche e operazioni sensibili. Il POCO X5 Pro non dispone dell’implementazione Apple e HackiOS non può riprodurne semplicemente le garanzie attraverso il software.

Ne derivano problemi con l’autenticazione dell‘account Apple e con i servizi che dipendono dalla catena di fiducia originale. Gli sviluppatori indicano che il processo FairPlay termina la propria esecuzione; di conseguenza, i contenuti dell’App Store e l’accesso tramite account Apple non risultano supportati.

Il progetto introduce inoltre componenti sostitutivi per funzioni normalmente gestite da corecrypto, AppleKeyStore, AMFI e dalle politiche Sandbox.

Non funzionano neppure la registrazione video e quella delle Live Photo. La compatibilità grafica rimane incompleta e le sessioni di esecuzione hanno una durata prestabilita: HackiOS nasce come piattaforma di ricerca e non come sistema progettato per rimanere operativo ininterrottamente.

Come provare HackiOS su Linux con QEMU

La disponibilità del codice sorgente permette ora di studiare il progetto senza possedere necessariamente il telefono utilizzato dagli sviluppatori. La strada più accessibile consiste nell’avviare HackiOS su Linux attraverso QEMU, seguendo le istruzioni pubblicate su GitHub.

Per la configurazione virtualizzata sono richiesti un computer Linux x86-64, circa 12 GB di spazio libero su disco e almeno 4 GB di RAM disponibili. Servono inoltre Python, Git, GCC, gli strumenti per la gestione degli archivi e una versione di QEMU capace di emulare la piattaforma ARM64. Gli autori raccomandano 7-Zip 23 o successivo per le operazioni di estrazione che coinvolgono APFS.

Il primo passaggio consiste nel clonare il repository principale con il comando git clone https://github.com/oosexgang/hackios-xnu-kernel.git hackios. Dopo essere entrati nella cartella creata, lo script common/setup.sh recupera il secondo repository, hackios-xnu-userland, e predispone l’area di lavoro.

Successivamente, ios165/fetch.sh scarica dai server Apple il firmware IPSW di iOS 16.5 e ne estrae i componenti necessari. La documentazione parla di un trasferimento di circa 7,4 GB. I file del sistema operativo Apple non sono inclusi nei repository pubblici.

Gli script common/build.sh qemu-virt e common/run.sh qemu-virt preparano le immagini necessarie e avviano la sessione virtualizzata. Il progetto fornisce già componenti precompilati, quindi non richiede obbligatoriamente la ricompilazione completa del kernel per una prima prova.

Secondo le indicazioni degli sviluppatori, la schermata di blocco dovrebbe comparire dopo circa 2-3 minuti nella configurazione QEMU. L’interazione avviene attraverso il mouse, utilizzato per simulare il tocco, e mediante alcuni comandi dedicati alla generazione di gesture e alla cattura delle schermate.

Chi intende compilare autonomamente XNU può utilizzare le patch contenute nella directory xnu/ e gli strumenti presenti in xnu-deps/. La compilazione avviene su Linux con Clang e LLD, utilizzando anche Theos e l’SDK iPhoneOS 16.5 per le dipendenze necessarie.

Ti consigliamo anche

Link copiato negli appunti