BootMii : explications supplémentaires


Newserator
 Share

Messages recommandés

Il y a quelques jours, Marcan a mis en ligne une vidéo présentant le concept du BootMii. Ce concept entièrement logiciel (le matériel que l'on pouvait voir sur la vidéo servant uniquement pour le debug) a la particularité de permettre de lancer du code directement au boot de la console et donc de ne plus être dépendant du système de la Wii.

Marcan a publié aujourd'hui des explications supplémentaires sur le principe du BootMii.

La 1ére chose à comprendre est que le BootMii n'est pas une seule application ou un seul hack, mais une "plateforme" pour le hack. Jusqu'à présent, nous n'avions qu'un contrôle limité sur ce que notre Wii exécute au niveau logiciel. Bien entendu, nous pouvons lancer nos propres applications, mais nous restions utilisateurs du système, tout que nous faisons passait par le système Nintendo. Nous pouvons éviter les mises à jour et essayer de comprendre le système en place, mais nous restons dépendants de ce dernier. Chaque partie d'un programme de type Homebrew dépend de l'IOS Nintendo. Ce n'est pas une mauvaise chose (en fournissant certains parties du code qu'il n'est alors pas nécessaire d'écrire), mais cela implique également de suivre ses propres règles.

Désormais, il existe certains hacks autour du système. PatchMii a été développé pour se débarrasser de certaines restrictions de l'IOS, mais cela n'est pas particulièrement pratique, et ne fonctionne réellement pour un IOS à la fois. Starfall contourne quand à lui certains ennuis du System Menu, mais il s'agit d'un hack bas-niveau, peu reluisant, du système de fichiers qui sera effacé par n'importe quelle mise à jour de Nintendo. A n'importe quel moment, Nintendo peut décider d'effectuer une mise à jour du système qui comblera les failles. Bien entendu, personne ne s'attend à ce que cela arrive (d'autres failles ont été trouvées), néanmoins cela reste comme une épée de Damocles.

BootMii est en passe de changer tout cela. Au lieu d'être utilisateur du système, condamné à hacker le système de l'intérieur, les rôles vont pouvoir être changés. Désormais nous aurons le contrôle et la partie logicielle de Nintendo devra désormais passer par nous pour effectuer quoique ce soit.

Avant d'entrer dans les détails, il faut mentionner un détail subtil mais qui a son importance concernant comment la décision s'est prise sur la mise en oeuvre de BootMii. Bien que nous pourrons prendre le contrôle du système, il était nécessaire de pouvoir accomplir cela en réduisant au maximum les modifications à appliquer au système existant. Cela représente plusieurs avantages. En séparant BootMii du système existant pour sa plus grande partie, il est alors possible de l'activer ou le désactiver à volonté. Cela pourrait être utile si par exemple, Nintendo décide de commencer à bannir les possesseurs de homebrews de la partie jeu en ligne (NDGX : un peu à l'image des bans sur le Xbox-Live de Microsoft).

Maintenant que la notion de plateforme est précisée concernant le concept BootMii, le travail continue à l'heure actuelle sur sa mise en oeuvre et son développement. N'attendez donc pas d'explications détaillées sur les parties qui restent encore à écrire. Cependant, voici quelques explications concernant la partie du BootMii qui a été mise en avant dans la vidéo : le BootMii-Core.

BootMii-Core est une pièce très importante de BootMii. Ce que cette partie effectue permet d'avoir le contrôle complet de la console aussi rapidement que possible lors du processus de boot. Une fraction de seconde après que vous ayez appuyé sur le bouton Power de votre console, BootMii-Core sera déjà lancé et vous aurez la possible d'effectuer tout ce que vous voulez à ce niveau. Cela n'est pas le seul avantage. En étant ainsi en place, BootMii-Core est également la partie logicielle la plus résistante qui soit jusqu'à présent contre les bricks. Vous devrez délibérément vouloir bricker votre Wii pour retirer BootMii, excepté un type particulier de mise à jour par Nintendo (ce point sera vu plus tard).

Retour sur la séquence de boot de la Wii. La 1ére partie du code qui est lancée est boot0, qui est une partie du travail caché réalisé par le chipset Hollywood et qui reste totalement intouchable. Celui-ci lance boot1 depuis le début de la NAND et vérifie celui-ci via un hash stocké dans un mémoire non accessible en écriture. Cela permet de s'assurer que boot1 n'est pas modifié (vous brickerez votre Wii si vous vous y essayez). Voilà la maintenant la partie intéressante :

boot1 est supposé charger boot2 depuis une section spéciale réservée de la NAND Flash. Boot2, qui est une sorte de mini-IOS, donne alors le coup d'envoi du chargement du system menu (et lance au passage le IOS requis). Cependant, la vérification du boot2 utilise exactement la même infrastructure que celle utilisée pour le reste de la Wii, et est également vulnérable au bug de la fausse signature (fakesigning). Sachant que boot1 n'est pas modifiable dès que la Wii quitte la chaine de fabrication, toutes les Wii existantes actuellement (autant qu'on le sache) sont et seront vulnérable à ce bug, ce qui nous permet d'installer un boot2, avec une fausse signature, de notre choix.

Comme vous l'aurez deviné, BootMii-Core est une sorte de boot2 faussement signé. Cependant, il ne s'agit pas d'une version hackée du boot2, ni un remplacement du boot2. Premièrement, vous devez réaliser que boot2 tel qu'il est actuellement stocké n'est pas une partie monolithique du software. Ce qui suit s'applique au boot2 et à tous les IOS précédent l'IOS30, et au fichier de boot de l'IOS30 et les suivants. Ces binaires IOS sont dans format simple en deux parties : un simple header, un petit loader ELF, et le propre payload* ELF. Le ELF contient le code IOS/boot2 actuel, et le loader ELF est un simple levier qui le charge en mémoire et le lance. Boot-Mii-Core remplace le loader ELF, laissant le payload* ELF du boot2 original intact.

* Payload : Partie contenant les informations utiles dans un message, par opposition aux informations de contrôle du message.

Maintenant, un petit peu plus de détails techniques. Le Boot-Mii-Core "ELF Loader" est lui même un fichier en deux parties. A cause des limitations matérielles (accès mémoire "spécifiques" sur le Wii et autres technicités qui ont pris une éternité à comprendre), il n'est pas possible de juste coller le code principal du BootMii-Core à la place du ELF Loader. Il est actuellement nécessaire de réaliser son propre fichier de chargement, et de la charger en utilisant notre propre loader ELF. De plus, BootMii-Core remplace la loader ELF boot2 avec un fichier 'composite' constitué de notre propre ELF loader (le "levier" (stub)), et le payload BootMii-Core (le "loader"). Notre nouveau "boot2" est désormais constitué de trois parties : notre ELF Loader Stub, le ELF BootMii-Core, et le ELF boot2 original - les deux premiers prenant la place du ELF loader original.

Le stub (levier) est heureusement un simple bout de code qui permet deux choses : décider de charger soit le BootMii soit le boot2 original, puis le charger et passer à l'option sélectionnée. Désormais, ce ne sera pas la façon normale de revenir au boot2 - Cette disposition vise à être une option de dernier recours au cas où quelque chose se passe mal (ce qui signifie habituellement que nous avons fait une erreur). Permettre que le stub loader charge le boot2 original impliquera probablement quelque chose d'ennuyeux comme appuyer de manière répétée sur le bouton RESET au boot en espérant que le stub "l'attrape". Espérons qu'il ne sera jamais nécessaire d'en arriver là.

Le vrai plaisir commence dans la portion du loader. Il s'agit d'un loader car il charge un autre code - depuis une Carte SD. Voici l'essentiel du processus : si le loader peut monter avec succès une Carte SD et charger un certain fichier depuis celle-ci (/system/iosboot.bin), il le lancera. Autrement, il reviendra au boot2 habituel et fera booter votre Wii comme d'habitude.

C'est tout. C'est le BootMii-Core. De là, vous pouvez le prendre n'importe où - vous pouvez coller un fichier sur une Carte SD et il sera lancé environs une seconde après avoir allumé votre Wii - avec un contrôle complet sur le Stralet, et de plus le contrôle complet sur le Broadway, Hollywood, et le reste du hardware Wii. Aucunes restrictions. Sympa, non ?

Précédemment, il a été indiqué que BootMii-Core aide énormément à éviter les bricks. La Nintendo DS a le FlashMe, qui remplace la partie du code correspondant au boot et met également en place un stub de récupération dans une portion protégée en écriture. Vous devez effectuer un pont physique sur la DS pour l'installer et par conséquent pour le retirer ou l'outrepasser. Malheureusement pour nous, ce type de protection matérielle n'existe pas sur la Wii. De ce fait, il est impossible d'empêcher quelqu'un qui veut réellement bricker sa Wii de le faire (il faut donc faire attention à ce que vous lancez sur votre console). Cependant, BootMii-Core est immunisé contre la plupart des dommages que vous pourriez causer au flash de votre Wii. Cela dépend uniquement de sa propre intégrité et de celle du boot1. Boot2 (et de plus BootMii-Core) est stocké dans une section séparée de la NAND, indépendante du dystème de fichiers. Cela signifie que vous pouvez effacer ou formater la totalité de la structure des dossiers de votre Wii, et BootMii-Core continuera de fonctionner. Il s'agit d'un des avantages d'être indépendant du boot2 original - ce que boot2 effectue dépend du système de fichiers puisqu'il s'attend à ce que certaines choses soient présentes et tente de monter le système de fichiers. Il n'existe que 4 méthodes possibles pour potentiellement écrire dans la partie où résident BootMii-Core et boot1 :

- En utilisant /dev/flash sous IOS (non testé)

- En utilisant /dev/boot2 sous IOS (non testé) (ne s'applique pas à boot1)

- En utilisant ES_ImportBoot (et un véritable ou faussement signé boot2 qui est plus récent que la version actuelle) (ne s'applique pas à boot1)

- En utilisant une écriture directe sur le hardware depuis l'extérieur de l'IOS, via une sorte de code sur le Starlet (Bushing pourrait vous en dire plus - il vous expliquerait combient cela peut être amusant d'oublier un appel d'effacement de la NAND quelque part au début du code de BootMii).

Nintendo peut toujours mettre à jour boot2, et dans ce processus écraser BootMii-Core par une copie vierge. Nous essaierons d'empêcher cela (en utilisant un numéro de version beaucoup plus long pour le BootMii-Core), mais la solution ultime serait de patcher l'IOS pour retirer ES_ImportBoot et en même temps la possibilité pour Nintendo de la faire. Mais c'est un sujet pour un autre chapitre.

Donc que pouvons nous faire d'autre avec BootMii-Core ? A vrai dire il n'y a aucune limite puisque vous lancez du code Starlet au boot. Cependant, un exemple simple est montré dans la vidéo : en utilisant un très simple iosboot.bin qui charge le boot2 original et le patch pour changer le boot title, il est possible de lancer la chaine homebrew au boot au lieu de le faire depuis le system menu. De cette manière pour pourrez corriger les problèmes de bannières, de brick du system menu et autres tout le temps que vous aurez la chaine homebrew et BootMii-Core installés. Un exemple plus élaboré serait de charger un utilitaire de sauvegarde/restauration de la NAND depuis la Carte SD, en utilisant un code personnalisé au lieu de l'IOS et sans dépendre du système de fichiers. Cela vous permettrait de corriger n'importe quel brick qui n'aurait pas atteint le BootMii-Core. Et bien entendu, les autres parties de la plateforme BootMii vous offrirons bien d'autres avantages de ce système de lancement au boot mais cela sera expliqué le moment venu.

BootMii-core sera publié lorsqu'il sera prêt. N'attendez pas de date de publication.

homesite.gif  Site officiel : Hackmii

Lien vers article original : http://wii.gx-mod.com/modules/news/article.php?storyid=1588

Lien vers le commentaire
Partager sur d'autres sites

Très prometteur ! Cela signifie quelque part la fin des modchips sur Wii...

Loin de la, as tu lu complètement ?

Pour le moment, Nintendo peut repatcher par derrière (et au revoir BootMii), et peut changer le matériel pour dégager la faille de la fausse signature.

Lien vers le commentaire
Partager sur d'autres sites

il sera publié selon le bon vouloir ou l'humeur d'un des codeurs :) un ptit leak et hop tout le monde va le P2P

Bravo! C'est grâce à ce genre de conneries que les développers sont de moins en moins chaud à travailler sur des projets pareils.

Tu serais content toi que le fruit de ton boulot se retrouve non terminé sur la toile revendiqué par un autre?

Lien vers le commentaire
Partager sur d'autres sites

bonjour tout le monde,

bon je voudrai clarifier quelques points.

tout d'abord concernant le backup loader, le BootMii n'as rien a voir avec,

actuellement il est déjà possible de lire des backups (waninkoko ou waligator)

la seul chose la dedans (je me réfère a une réponse de marcan dans les comments du site hackmii)

c'est que la méthode actuellement utilisée est la méthode la plus facile mais du coups, la plus foireuse (limitation de la vitesse de lecture (pas totalement sur la dessus), incompatibilité, etc...) or d'après marcan, toujours, une autre méthode est possible mais demande beaucoup plus de travail et de réflexion (c'est beaucoup plus complexe, en somme).

tout ca pour dire que le BootMii ne changera RIEN à ça.

ensuite pour résumé, ceux qui n'aurai pas tout compris à l'explication de marcan (gracieusement traduite par GX-mod, je ne connais pas le traducteur, mais je le remercie chaleureusement):

- le BootMii est une solution logicielle (donc pas de materiel a acheter, ni de soudure a faire)

- le BootMii s'installera comme n'importe quel homebrew actuel (donc il faut, au préalable, etre capable de lancer des homebrew c'est a dire avoir préalablement installer le twilight hack)

- le BootMii DEVRA etre installé AVANT que la console soit brickée pour pouvoir tenter de la réparer.

- le BootMii ne change RIEN a ce que l'on connait déja de la Wii, ou ce que l'on découvrira par la suite (il permet "juste" de ne pas dépendre du systeme de Nintendo qui gere la console, donc pour avoir des avancées conscequentes il faudra réecrire completement un autre systeme, ce qui demande un travail énorme, donc ne vous attendez pas a avoir des boulversements dans un avenir tres proche.)

Voilà, en espérant avoir été asses clair.

et par pitié, ARRETER de crier: "grace a BootMii, a nous le nouveau super backup loader de la mort qui tue, qui déchire tous...."

Maintenant il y a qu'en meme un point super positif la dedans, c'est que grace a BootMii, il sera beaucoups plus facile de débriker une wii, et donc les développeur auront moins peur de tester de nouvelles choses, (car jusqu'a maintenant, il y a toujours l'angoisse de bricker sa Wii lorsque l'on teste un nouveau programme). donc les nouvelles applications devraient se développer plus rapidement qu'elles ne le sont actuellement.

c'était ma maigre contribution a ce sujet.

RH2K2

PS: dans la video le HBC qui est lancé, est celui déja installé dans la console, mais pourrai tres bien etre installé sur la SD.

Modifié par rogerhanin2002
Lien vers le commentaire
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
 Share