Comment pirater la protection contre la copie de la console Sega Dreamcast


Après la sortie du DOOM Black Book, je suis parti en vacances au Japon, où j'ai réussi à jouer Ikaruga sur une vraie machine d'arcade dans la salle de jeux Taito HEY dans le quartier Akihabara de Tokyo. Cette expérience a de nouveau ravivé mon intérêt pour la dernière console de jeu vidéo SEGA - Dreamcast.

Sur le réseau, vous pouvez trouver de nombreux documents qui facilitent grandement le processus d'étude de la question. Il existe deux excellentes ressources qui peuvent rapidement mettre à jour n'importe qui: le merveilleux site Web de Marcus Comstedt, qui décrit tout jusqu'aux registres du GPU, et la ressource de Jockel «Créons un jeu pour Sega Dreamcast à partir de zéro» .

En étudiant la voiture, j'ai découvert une histoire incroyable sur la façon dont les pirates ont rapidement craqué la protection des copies de jeux et ruiné les derniers espoirs matériels de SEGA.

Premier niveau de protection: GD-ROM


Sur le papier, la protection contre la copie pour SEGA Dreamcast semblait très solide. Les jeux ont été livrés sur un support spécial appelé GD-ROM, que seul SEGA pouvait produire. GD signifie «Gigabyte Disc» («disque gigaoctet»), c'est-à-dire que sa densité d'enregistrement accrue a fourni un volume maximal de 1 Go, ce qui était bien plus que les capacités d'un CD-ROM conventionnel (700 Mo).


image

Le GD-ROM avait les mêmes dimensions physiques que le CD-ROM, mais au niveau macro, il se composait de deux zones reconnaissables à l'œil nu.

La première zone (sombre) est une région basse densité compatible CD-ROM contenant jusqu'à 35 Mo. Il contenait une piste audio vocale rappelant à l'utilisateur que le contenu du disque était destiné à SEGA Dreamcast, et non à un lecteur CD [1] . De plus, le développeur y a ajouté une piste avec des fichiers texte, par exemple, des informations sur les droits d'auteur et parfois du matériel promotionnel, par exemple, des illustrations du jeu.

La zone haute densité (lumière) a été stockée jusqu'à 984 Mo [2] et tout le contenu du jeu s'y trouvait.

Il semblait impossible pour les pirates d'éjecter le jeu du disque et de le graver à nouveau pour la distribution.

Démarrage à partir de GD-ROM: IP.BIN et 1ST_READ.BIN


Avant de parler de la façon dont les pirates ont réussi à copier des jeux, nous devons comprendre la séquence de chargement. Dreamcast n'avait pas de système d'exploitation. Il existe une idée fausse répandue selon laquelle il utilisait Windows CE, mais en fait, Microsoft OS n'était qu'une bibliothèque statique supplémentaire que les développeurs de Dreamcast pouvaient connecter pour utiliser DirectX, DirectInput et DirectSound [3] . Dans certains jeux, WinCE a été utilisé [4] , mais dans la plupart (par exemple, Ikaruga), il n'a pas été utilisé. Indépendamment de ce que le développeur a utilisé, un jeu avec un système d'exploitation entièrement connecté et Dreamcast a toujours commencé de la même manière.

Pendant l'utilisation normale et le lancement du jeu officiel sur le Dreamcast qui vient d'être allumé, BOOTROM a été lancé, chargeant le bootstrap du GD-ROM dans la RAM. Ce petit programme, situé sur la dernière piste GD-ROM et connu de la communauté sous le nom «IP.BIN», affichait un écran sous licence SEGA et effectuait deux niveaux de démarrage pour configurer les registres matériels, créer une pile CPU et initialiser VBR [5] .

Plus important encore, IP.BIN contenait le nom de l'exécutable du jeu. Ce nom a été recherché dans le système de fichiers GD-ROM et chargé dans la RAM à 0x8C010000, après quoi le programme y a été transféré. En règle générale, l'exécutable était nommé «1ST_READ.BIN».


Après que le CPU est allé à l'adresse 0x8C010000, le jeu a commencé comme il se doit.

Deuxième niveau de protection: le rançongiciel Scrambler


La possibilité théorique de piratage s'est présentée en raison de la capacité apparemment insignifiante de Dreamcast à démarrer non pas à partir du GD-ROM, mais à partir du CD-ROM. Initialement, cette fonctionnalité appelée «MIL-CD» a été conçue pour ajouter des fonctions multimédias aux CD de musique, mais n'était pratiquement pas utilisée, à l'exception de sept applications de karaoké.

Les ingénieurs de SEGA ont compris que le chargement d'un MIL-CD pouvait être utilisé comme vecteur d'attaque, ils ont donc ajouté une protection. Lorsque la console a reconnu le CD-ROM, BOOTROM a chargé IP.BIN de la manière habituelle, mais a chiffré 1ST_READ.BIN, à première vue de façon aléatoire. L'exécutable de travail s'est transformé en un hachage chaotique qui a provoqué le gel de la console.


De ce point de vue, la console semblait être protégée de manière fiable. Dreamcast pourrait reconnaître une copie piratée du jeu, corrompre le fichier exécutable pendant le processus de téléchargement et vaincre les pirates.

Sers ma longue épée!


Le problème avec le fichier endommagé a été résolu lorsque fin 1999, le SDK Katana (SDK Sega officiel pour Dreamcast) a été volé par l'équipe de pirates d'Utopia [6] . Il s'est avéré que le brouilleur n'était rien d'autre qu'une mise en œuvre du principe de la «sécurité par l'obscurité». Le SDK contenait un brouilleur inversé, qui transformait l'exécutable correct en un «hachage arrière», qui redevenait un exécutable après avoir chargé et brouillé la console Dreamcast lors du démarrage à partir du CD-ROM.


Récupérer un jeu avec son GD-ROM


Le SDK volé était tout ce dont les pirates avaient besoin. Grâce à la possibilité d'exécuter du code sur une machine, Dreamcast peut désormais être utilisé non pas comme une console de jeu, mais comme un lecteur GD-ROM. Le «câble codeur» du SDK [7] a permis de connecter la console à un PC et d'établir une connexion physique. Pour que la console vide le contenu des pistes GD, un fichier exécutable spécial a été écrit. Ensuite, il a été réembrouillé et gravé sur un CD-ROM pour sortir tous les 1 Go de données via le port série de la console. C'était un processus sujet aux erreurs qui prenait jusqu'à 18 heures [8] [9] . Le résultat a été enregistré dans un format ".gdi" spécialement créé.

  ikaruga.gdi 153 octets
 track01.bin 13 982 640 octets
 track02.raw 2,088,576 octets
 track03.bin 1185760800 octets 

Un fait intéressant : vous pouvez voir que la quantité totale de données n'est pas de 1 Go, comme mentionné ci-dessus, mais de 1,2 Go. Cela est dû au fait que les secteurs GD-ROM de 2352 octets suivent le format Red Book, qui utilise 12 octets pour la synchronisation, 4 octets pour l'en-tête, 2048 octets pour la charge utile et 288 octets pour le code de détection d'erreur / code de correction d'erreur [10 ] .

  $ cat ikaruga.gdi 
 3
 1 0 4 2352 track01.bin 0
 2 5945 0 2352 track02.raw 0
 3 45000 4 2352 track03.bin 0 

Comment adapter un GD-ROM de 1000 mégaoctets à un CD-ROM de 700 mégaoctets


Pour adapter le jeu sur un CD-ROM de 700 mégaoctets, les ressources du jeu ont été retravaillées. Le système de fichiers ISO-9660 utilisé dans GD-ROM a facilité la modification de la discrétisation des vidéos et de la musique, ainsi que leur suppression complète. Cependant, pour la plupart des jeux, un processus aussi complexe n'était pas nécessaire car ils n'occupaient pas l'intégralité des 1 Go. Par exemple, l'Ikaruga de Treasure ne prenait que 150 Mo et la plupart de son contenu était rempli de zéros. Dans de tels cas, il suffit de modifier les données de remplissage.

En fait, ISO-9660 est un format tellement connu que même des scripts Python (par exemple gditools.py ) ont été écrits pour étudier le contenu des archives .gdi.

Emballage et distribution


Les deux dernières étapes du processus ont été le brouillage inverse 1ST_READ.BIN et le regroupement de toutes les informations dans une archive .cdi afin que DiscJuggler puisse graver l'image sur CD-R. Le résultat obtenu a fonctionné sans problème sur n'importe quel vancast Dreamcast sans avoir besoin d'une puce de modification.

Réaction SEGA et conséquences


SEGA a rapidement sorti la deuxième version de la console DC avec le MIL-CD complètement désactivé, mais le dommage a déjà été fait. Après une chute catastrophique des revenus et la sortie de la PS2 concurrente, les développeurs ont abandonné Dreamcast et SEGA a abandonné le développement des équipements, se concentrant entièrement sur la création de logiciels.

Les références


[1] Source: Atelier SEGA GD
[2] Source: segaretro.org: GD-ROM
[3] Source: Microsoft annonce Windows CE Toolkit pour Dreamcast
[4] Source: jeux Dreamcast utilisant Windows CE
[5] Source: IP.BIN et 1ST_READ.BIN
[6] Source: Construisons un jeu Sega Dreamcast à partir de zéro
[7] Source: adaptateur série PC
[8] Source: Un regard plus précis et plus approfondi sur la sécurité du Dreamcast
[9] Source: des moyens plus rapides ont été conçus en dernier, en utilisant le connecteur à large bande du DC
[10] Source: Dreamcast Myth: Capacité de stockage GD-ROM

Source: https://habr.com/ru/post/fr433072/


All Articles