Un développeur a émulé iOS 1.0 sur un ordinateur avec QEMU
- Medhi Naitmazi
- Il y a 1 an
- 💬 5 coms
- 🔈 Écouter
Un talentueux développeur a réussi à émuler la toute première version du système d'exploitation de l'iPhone sur un ordinateur avec QEMU.
Depuis des années, il est possible d'exécuter macOS sur des ordinateurs non-Apple grâce aux outils Hackintosh. Mais lorsqu'il s'agit d'iOS, personne n'a été en mesure de le faire fonctionner sur d'autres plateformes - du moins jusqu'à présent. Un développeur a réussi à émuler la première version de l'iPhone OS sur un ordinateur en utilisant QEMU. Avant de l’appeler iOS peu après l’arrivée de l’iPad, Apple évoquait son système d’exploitation mobile iPhone OS.
iPhone OS 1.0 émulé sur un ordinateur
Martijn De Vos, également connu sous le nom de devos50, a usé du procédé de rétro-ingénierie pour émuler la toute première version de l'iPhone OS publiée pour l'iPod touch de première génération en 2007, après le lancement de l'iPhone. Le projet a pris plus d'un an, car le développeur a dû trouver comment simuler des éléments tels que le support multitouch et d'autres composants matériels uniques aux premiers appareils mobiles d’Apple.
Dans un billet de blog, De Vos explique que la partie la plus délicate était d'émuler les composants matériels de l'iPod touch. C'est pourquoi le développeur a choisi d'émuler la première version du système d'exploitation de l'iPhone faite pour l'iPod plutôt que pour l'iPhone, car pour faire fonctionner la version de l'iPhone, il faudrait émuler encore plus de composants.
Dans le même temps, le doctorant néerlandais a également choisi l'iPhone OS 1.0 en raison du fait que cette version comporte beaucoup moins de mécanismes de sécurité que les versions plus récentes du système d'exploitation.
Les appareils Apple contemporains contiennent de nombreux composants matériels supplémentaires, tels que des moteurs neuronaux, des enclaves sécurisées et une variété de capteurs qui rendront l'émulation de ces appareils beaucoup plus difficile et longue.
Il est intéressant de noter que le projet n'est devenu réalité que grâce à OpeniBoot, une implémentation open source du programme de démarrage d'Apple. Le projet a été abandonné il y a longtemps, mais il permettait aux utilisateurs de faire des choses comme installer Android sur les premières générations de l'iPhone et de l'iPod touch. Cela a permis à De Vos de gagner beaucoup de temps dans l’émulation du XNU kernel. Le chercheur s'est également appuyé sur les premiers travaux d'émulation d'iOS de Zhuowei et de Jonathan Afek.
Un émulateur iOS fonctionnel
Malgré quelques bogues, le projet final est fonctionnel, et l'iPhone OS 1.0 a été émulé avec succès avec QEMU - un logiciel libre de machine virtuelle, pouvant émuler un processeur et, plus généralement, une architecture différente si besoin. QEMU est signé Fabrice Bellard.
Le système est entièrement navigable à l'aide d'une souris et d'un clavier, et la plupart des applications pré-installées fonctionnent parfaitement. Certaines situations font planter le système, mais l'exploit est à souligner. Faire tourner une plateforme sur une autre n'est pas une mince affaire, comme nous l'évoquions par exemple récemment à propos de l'émulateur Switch Ryujinx.
Le développeur note que c'est probablement la première fois que quelqu'un a émulé le système d'exploitation de l'iPhone en utilisant des outils open source. Corellium, par exemple, vend des dispositifs virtuels iOS, mais tous les outils et le code sont privés. Créer sa propre machine virtuelle n'est pas exactement facile, mais De Vos a partagé tous les détails dans un billet de blog pour ceux qui sont intéressés à le faire.
Voici d'ailleurs les éléments fonctionnels :
- Le moteur cryptographique AES
- Le moteur de hachage SHA1
- Le module d'identification de la puce
- L'horloge matérielle et le timer
- Le contrôleur GPIO
- L'écran LCD et les framebuffers
- Le contrôleur NAND et le module de code correcteur d'erreurs (ECC)
- Le contrôleur de mémoire flash (FMC), utilisé pour communiquer avec la mémoire NAND.
- Le dispositif multitouch
- L'unité de gestion de l'énergie et l'horloge en temps réel intégrée
- Le contrôleur SDIO
- Le contrôleur SPI
- Le contrôleur I2C
- Le contrôleur d'interruptions vectorielles (VIC) et le contrôleur d'interruptions GPIO
- Le contrôleur d'accès direct à la mémoire (DMA)
- Le contrôleur UART
Et ceux qui ne sont pas fonctionnels (non essentiels) :
- Les dispositifs USB OTG/Synopsys
- Les périphériques audio
- Le contrôleur WiFi 802.11
- Le processeur graphique PowerVR MBX
- Le moteur d'encodage/décodage vidéo
- L'accélérateur et le capteur de lumière
Un émulateur pour iOS 2.1
Pour son prochain projet, de Vos veut émuler un iPod touch de deuxième génération, qui est sorti avec l'iPhone OS 2.1. Un défi qui devrait être moins ardu pour l
Est-ce quelque chose qui pourrait vous intéresser ? Dans quel but ?