Les secrets de la Playstation 2

PS2 préhistorique

Pourtant tout n’est pas parfait. Tous les loaders que l’on peut trouver sur le Web ne fonctionnent pas toujours sur certains modèles de PS2. Les connaisseurs le savent bien, les 3 premières versions japonaises de la PS2 on un bug agaçant qui empêche les loaders de s’exécuter, ce sont les versions SCPH-10000, 15000 et 18000. Ces consoles, sont les toutes premières générations de PS2 sortie dans le monde. L’Europe et les États-Unis ont eu les versions SCPH-30000, c’est à dire la 4ème génération de PS2. Sans entrer dans des détails techniques ennuyeux les premières versions de PS2 ont un « bug » (en fait ce n’est pas un bug) présent dans le BIOS de la console qui empêche l’exécution des programmes sur carte mémoire, lorsque vous avez effectué l’opération de copie du loader et enfin mis le code du jeu PSX, lors du lancement vous aurez le droit a un écran blanc et la console sera plantée. La scène homebrew PS2 n’a pas encore résolu ce bug étant donné la rareté des premiers modèles de PS2, et la difficulté pour s’en procurer. De plus, ces modèles étant minoritaires sur le marché, les développeurs préfèrent se consacré à autre chose.

 

image--image

 

Toutefois il reste un espoir pour les tous premiers fervents admirateurs de cette console, les heureux possesseurs des PS2 « first release ». En effet, le BB Navigator ouvre une voie encore jamais divulguée sur le Web. Mais nous y reviendrons plus tard, car pour comprendre pourquoi cela est relativement exceptionnel il faut explorer les entrailles du BB navigator.

Le trio gagnant

Première constatation le BB navigator est basé sur un noyau Linux. Plus précisément la distribution « Blackrhino » la version officiel de Linux compiler exclusivement pour la PS2. Cette version est basée sur la distribution Redhat et s’installe sur le disque dur de la PS2. Ce Linux constitue le cœur du BB Navigator. La PS2 démarre directement sur Linux et vous propose ensuite une flopée de service.
image
Deuxième point, l’installation du BB Navigator requière de l’espace de stockage sur la carte mémoire. Si vous n’avez pas de carte mémoire il vous sera impossible d’utiliser le BB Navigator. Pourquoi avoir besoin de carte mémoire alors qu’il y a tellement plus de place sur un disque dur ? Certain pensent déjà avoir la réponse à cette question, à savoir l’installation du programme de lecture des DVD vidéo de la PS2. En effet, il existe une option dans le BB Navigator qui permet de mettre à jour le lecteur de DVD vidéo. Les premiers modèles de PS2 ne proposaient pas la lecture directe des DVD vidéo. L’application de lecture n’était pas intégrée au BIOS de la console comme sur les PS2 que l’on connaît en Europe et aux Etats-Unis. Les première PS2 étaient vendue avec une carte mémoire et un CD nommé « Utility Disc ». Ce CD permet l’installation ou la mise à jour du lecteur de DVD vidéo sur la carte mémoire. Une fois installé, si vous insérez un DVD vidéo dans le lecteur de la PS2, celle-ci lancera le programme de lecture depuis la carte mémoire. Si vous n’aviez pas ce disque, ou pas de carte mémoire il vous était donc impossible de regarder des DVD vidéo avec votre PS2. Cependant, le BB Navigator n’impose pas l’installation du programme de lecture des DVD vidéo. C’est une option que vous choisissez d’installer ou pas. Alors à quoi peut bien servir cette carte mémoire ?

 

image--image

 

Troisième constatation, après l’installation du BB Navigator la console met plus de temps à démarrer. Non pas sur une application mais sur l’écran de démarrage de la PS2. Que le disque dur soit branché ou pas. Ce temps supplémentaire est causé par le chargement des fichiers précédemment installés sur la carte mémoire. En effet, le BB Navigator installe sur la carte mémoire les fichiers vitaux au démarrage et les charge ensuite afin d’initialiser le disque dur et les périphériques de communication comme la carte réseau ou les ports USB. Le reste du chargement s’effectue alors depuis le disque dur. Jusque là rien de très exotique. C’est la procédure classique du chargement d’un loader, à un détail près, et pas des moindres.
image--image

 

C’est en effet sur ce point que s’ouvre une voie intéressante pour tous les « bidouilleurs » de PS2. La procédure d’installation d’un loader, bien que simple, reste tout de même fastidieuse. Il faut posséder un jeu PSX, créer une signature à partir celui-ci et ensuite la placer sur la carte mémoire. D’autant que cette astuce ne fonctionne plus sur les derniers modèles de PS2, que bien évidemment Sony a corrigés. C’est pourquoi le BB Navigator peut être utile pour explorer une nouvelle façon de lancer des applications bien plus simplement que la technique de Marcus R. Brown ou de l’installation onéreuse d’une puce. Pourquoi ? Comment ? Parce qu’une fois installé le BB Navigator n’a besoin d’aucun CD pour démarrer. Oui vous avez bien lu, la PS2 démarre directement depuis le disque dur sans aucun CD ou DVD dans le lecteur. Ou plutôt démarre depuis la carte mémoire puis ensuite sur le disque dur. Comment cela est il possible ? Entrons dans le vif du sujet et n’hésitons pas à parler un peu technique.

 

image

Brain overflow

Nous savons jusqu'à présent que pour lancer une application depuis la carte mémoire il fallait un CD de jeu PSX dans le lecteur de la Playstation 2. Ce CD « faisant croire » à la console que la signature de l’application sur le CD est la même que sur la carte mémoire. Cette « faille » ultra classique du monde de l’informatique se nomme le « buffer overflow ». Pour faire simple, il faut parasiter un programme se chargeant normalement en lui faisant avaler plus de valeur qu’il ne peut en stocker. Pour simplifier, imaginons un espace mémoire (comme un tableau) dans lequel les 10 premières cases sont réservées au programme de démarrage, la technique du « buffer overflow » va remplir la mémoire au delà de la limite des 10 cases, ce qui va obliger le programme à se relancer, puisque celui-ci a rencontré une erreur. La relance du programme va permettre de modifier une partie du code pour exécuter autre chose que ce qui était prévu au départ. Si les 10 premières cases mémoire contiennent effectivement le programme original de démarrage, imaginons que les 10 suivantes qui contiennent la suite normale du programme soient réécrites. Ainsi, en faisant déborder le programme au delà de la place normale qu’il devrait occuper on remplit les cases 11 à 20 qui contiennent ce que l’on appel des pointeurs. Ces pointeurs, littéralement, pointent vers le reste du programme à exécuter, il suffit alors de les faire pointer vers autre chose que la suite normale du programme pour charger une application non prévue. Cette technique permet d’exécuter du code non signé à partir d’un code signé. En effet, pour protéger sa console Sony a installé un système de sécurité empêchant l’exécution de tout programme non crypté. Cette technique a deux utilisations :

 

  • La première, protéger la console contre tout programme pirate ouvrant des possibilités de copie ou de toutes autres utilisations non prévues par le constructeur.

 

  • La seconde est légale et historique. Un programme doit être crypté et signé par le kit de développement officiel de Sony, comme cela on limite le nombre de personnes susceptibles de développer sans le kit officiel. Cette technique permet entre autres d’empêcher les éditeurs n’ayant pas souscrit de licence de développement à Sony, de commercialiser un programme sur la PS2 sans payer celle-ci.

 

Ainsi, il vous est toujours possible d’exécuter un programme signé et crypté sans souscrire à la licence de Sony, mais dans ce cas vous êtes hors la loi. Dans l’autre cas, la console ne lancera jamais aucun programme qui n’est pas signé et crypté. En tant que développeur amateur vous êtes donc bloqué, car vous ne pouvez pas vous payer la licence de développement, et vos programmes PS2 ne peuvent pas être exécutés sur une PS2 classique (qui n’est pas un kit de développement). La seule solution, est celle découverte par Marcus R. Brown. Elle utilise le début d’un programme officiel crypté et signé pour permettre de lancer un autre programme qui lui n’est ni crypté, ni signé. Ainsi, le but de l’exploit de Marcus R. Brown est simplement de pouvoir exécuter son propre code sur la PS2, sans passer par le kit de développement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.