Dossier réalisé Par Strider
Egalement disponible sur son Blog
J'ai voulu faire des copies de sécurité de mes jeux Neo Geo CD. Hélas, j'ai gaspillé pas mal de CD car je n'arrivais pas à créer des copies lisibles sur ma CDZ. Après quelques recherches sur le net, je me suis rendu compte que la CDZ, contrairement aux deux autres modèles plus anciens de Neo Geo CD, ne permet pas de faire fonctionner des copies. Par curiosité, je me suis penché sur le système de protection.
Les messages d'erreurs de la NeoGeo CD sont:
0000 : erreur générale, nettoyer le CD et réessayer. L'erreur se produit aussi avec un CD gravé trop vite
0001 : erreur de lecture dûe au CD ou à la lentille du laser qui est sale ou endommagée
0002 : problème mécanique ou message d'erreur sur les jeux protégés (typiquement si l'on ne vire pas la protection sur une copie d'un jeu)
0003 : problème mécanique ou message d'erreur sur les jeux protégés (typiquement si l'on ne vire pas la protection sur une copie d'un jeu)
Après quelques recherches, j'ai trouvé les explications d'un hacker nommé Fakk2. Il existe en réalité deux protections, qu'il nomme "CDZ protection" et "in-game protection". La première est assez facile à désactiver, la seconde demande des connaissances en 68000 car il faut carrément trafiquer un exécutable. Seuls 33 jeux sont protégés, j'ai mis un tableau récapitulatif ici, fourni par Fakk2 :
NOM DU JEU |
CDZ Protection |
In-Game Protection |
|
YES |
|
Art of Fighting 3 |
YES |
YES |
Art of Fighting 3 Japan Box Set |
YES |
YES |
Breakers |
YES |
NO |
Brikin ' Ger / IronClad |
YES |
NO |
Fatal Fury 3 |
NO |
YES |
Fatal Fury Real Bout |
YES |
YES |
Fatal Fury Real Bout Special |
YES |
YES |
Fatal Fury Real Bout 2: Newcomers |
YES |
YES |
Futsal / Pleasure Goal 5 on 5 Soccer |
YES |
NO |
King of Fighters '95 |
NO |
YES |
King of Fighters '96 |
YES |
YES |
King of Fighters '96 NG Coll. |
YES |
YES |
King of Fighters '97 |
YES |
YES |
King of Fighters '98 ][ |
YES |
YES |
King of Fighters '99 |
YES |
YES |
Last Blade 1 |
YES |
YES |
Last Blade 2 |
YES |
YES |
Magical Drop II |
YES |
NO |
Metal Slug |
YES |
NO |
Metal Slug 2 |
YES |
NO |
Neo Drift Out! |
YES |
NO |
Neo Geo CD Special |
NO |
YES |
Neo Turf Masters |
YES |
NO |
Ninja Masters |
YES |
NO |
Ragnagard |
YES |
NO |
Robo Army |
NO |
YES |
Samurai Shodown 3 |
YES |
YES |
Samurai Shodown 4 |
YES |
YES |
Samurai Spirits R.P.G. |
YES |
YES |
Soccer Brawl |
NO |
YES |
Stakes Winner |
YES |
NO |
Super Sidekicks 3 |
NO |
YES |
Twinkle Star Sprites |
YES |
NO |
1. Protection CD
Mettre le CD du jeu dans le lecteur du PC et chercher le fichier CPY.TXT. Lorsque le jeu possède une protection CD, la taille de ce fichier doit être de 2048 octets. Si le fichier est bien plus petit (29 octets par exemple), le CD n'est pas protégé.
Avec un éditeur hexadécimal, il faut repérer la chaîne "NEO-GEO" puis remplacer les deux premières occurrences de "g" par "f". En général on les trouve aux offsets $34 et $40. Sauver le fichier et le mettre de côté pour remplacer celui qui se trouve dans l'image ISO.
C'est tout ? Ben oui !
2. Protection dans le jeu
Dans mon cas, je possède l'original de Samurai Shodown 4. Il se trouve dans la liste ci-dessus, il va falloir se creuser les méninges pour virer la protection.
Encore faut-il savoir quel fichier modifier. Sur le CD du jeu, ouvrir le fichier IPL.TXT. Il contient la liste de tous les fichiers chargés au démarrage du jeu. Repérer le premier dont l'extension est PRG, c'est l'exécutable 68000. Dans le cas de Samurai Shodown 4, c'est P222.PRG.
Ouvrir ce fichier avec un éditeur hexadécimal (je recommande le très puissant WinHex). Il faut maintenant chercher le message d'erreur qui s'affiche lorsque la CDZ exécute une copie. Sauf erreur de ma part, il existe deux types de message :
WARNING
THIS CD SOFTWARE IS A COPY AND CAN
NOT BE PLAYED FURTHER.
COPIED SNK SOFTWARE INFRINGES
SNK'S COPYRIGHTS AND TRADEMARKS.
WE RECOMMEND THAT YOU PURCHASE
ORIGINAL SNK SOFT WARE.
et l'autre :
DISK I/O ERROR
( ID = 0003 )
PLEASE POWER OFF
Sur Samurai Shodown 4 c'est le premier message. Chaque message est entouré d'espaces (caractères $20). Il faut noter l'adresse de début du message, et donc remonter jusqu'au premier espace. Dans mon cas le début se trouve à l'adresse $924.
Le plus dur est de savoir où se trouve la routine qui fait référence à ce texte. L'exécutable du jeu appelle une sous-routine qui va tester la protection, laquelle va afficher, le cas échéant, ce message d'erreur. Comme je n'ai aucun désassembleur 68000 sur le PC, je me suis amusé à analyser le code sur... un Atari ;-)
Bien entendu, on peut se contenter de n'utiliser que WinHex puisque l'on va faire principalement de la recherche hexadécimale.
N'étant pas un pro du désassemblage, j'utilise Adebug sur Atari. J'ai essayé avec Desert Drain, TT Digger et Easy Rider : ils ne savent pas désassembler un binaire qui n'est pas un exécutable Atari.
Sous Adebug, je charge le fichier binaire avec la touche "b" et je tape "E:\P222.PRG,100000". Je décide de placer le programme à l'adresse $100000 car cela me permet de m'y retrouver plus facilement. En effet, le début du message d'erreur se trouvant à l'offset $924, je peux donc me rendre directement en $100924.
D'après Fakk2, le code qui fait appel au message d'erreur se trouve juste au-dessus, environ 200 à 250 octets plus haut. L'adresse du message d'erreur est chargée relativement au PC (Program Counter). Mais ce n'est pas tout le temps le cas, parfois on peut voir l'adresse elle-même dans le code : c'est le cas de l'offset absolu.
L'offset absolu
Dans ce cas particulier, l'adresse est directement dans le programme. Avec WinHex, on peut rechercher une valeur hexadécimale (raccourci : CTRL + ALT + X). C'est le cas de King of Fighters '98 : le message d'erreur se situe à l'offset $A09E6. La recherche permet de voir que cette adresse est écrite en dur dans le code à l'offset $1E2F (à l'adresse $101E2C sous Adebug).
cf. la ligne : MOVEA.L #$A09E6,A0
Comme pour le cas de l'offset relatif, il suffit de remonter un peu plus haut dans le code pour voir la sous-routine de protection.
Revenons à nos octets. Il faut chercher un bout de code au-dessus du message d'erreur qui fait référence à l'adresse $100924. En montant d'une dizaine de lignes on peut lire ceci :
001008FE LEA ($100924,PC),A0
On a déjà fait la moitié du boulot !
A partir de cette adresse $1008FE il faut remonter plus haut dans le code jusqu'à trouver ceci :
Ce qui nous donne, en hexadécimal : 10 39 00 10 FE 85
Il vaut mieux utiliser WinHex. Désassembler le code n'est pas obligatoire pour dégager la protection, mais ça permet de mieux comprendre ce que l'on fait. Il est possible que WinHex trouve plusieurs occurrences, dans ce cas il faut prendre la première à partir du début du fichier.
Juste après, on devrait voir quelque chose du genre : 81 39 00 10 xx xx (où "10 xx xx" est en fait une adresse).
Ce qui correspond à cette ligne de code :
C'est le début du code de la protection.
Quelques octets avant "10 39 00 10 FE 85" on devrait voir "2F 00", ce qui correspond au début de la routine :
(une bête sauvegarde du contenu de D0 sur le sommet de la pile)
C'est précisemment ce bout de code qu'il faut désactiver. Comment ? En terminant prématurément la routine avec un RTS (Return from subroutine). La routine s'arrête et le programme retourne à la routine appelante. Tout continue comme si de rien n'était, la Neo Geo étant persuadée d'avoir appelé le programme de vérification anti-copie. Le code hexadécimal de RTS est "4E 71".
On note donc l'adresse où l'on trouve "2F 00", dans Adebug c'est $100800, ce qui nous donne tout simplement l'offset $800 dans WinHex. On remplace "2F 00" par "4E 71" et on sauve l'exécutable, il sera à placer dans l'image ISO.
Et si l'on ne trouve pas de "2F 00" ? C'est le cas de certains jeux (King of Fighters '98 par exemple). Il faut revenir sur l'adresse qui contient "10 39 00 10 FE 85" et remplacer "10 39" par "4E 71".
Voilà, vous savez tout sur la protection des jeux Neo Geo CD. A noter que seule la Neo Geo CDZ est concernée car les copies passent très bien sur ma Neo Geo CD modèle 2.
Extraction des pistes
Objectif : obtenir la piste de données au format ISO, les pistes audio au format Wave et un fichier Cuesheet.
Il existe plusieurs logiciels pour le faire. Après des heures de tests, je n'ai trouvé aucun logiciel capable d'extraire à la fois la piste de données et les pistes audio. CDRWin et Nero ne savent pas extraire la piste de données et me signalent une erreur (probablement une erreur de lecture à cause de la protection).
Commençons par les pistes audio. On peut les extraire avec Nero ou Exact Audio Copy qui a l'avantage d'être gratuit.
Pistes audio avec Nero
Dans le menu "Extras", sélectionner "Enregistrement des pistes audio..." (le menu est différent selon les versions).
On peut choisir le format des noms de fichiers qui vont être créés. Je recommande de ne pas mettre d'espace dans ces noms si vous voulez utiliser Nero pour graver l'image par la suite.
Voici la fameuse erreur qui se produit lorsque l'on demande à Nero d'extraire la piste de données.
Pistes audio avec Exact Audio Copy
Choisir le bon lecteur et cliquer sur l'icône d'extraction Wave
Extraction de la piste de données
Il faut utiliser un autre logiciel comme MagicISO ou PowerISO.
J'ai une préférence pour MagicISO qui me paraît plus performant.
Dans le menu "Tools", choisir "Make ISO from CD/DVD-ROM".
Création du Cuesheet
Le fichier Cuesheet (extension .cue) indique la structure du CD. Il est utilisé par certains logiciels de gravure.
Avant tout, je recommande la création d'un fichier pour la première piste, car on a pour l'instant que les pistes audio. Copier la première des pistes audio et la renommer. En profiter également pour renommer les fichiers Wave afin de ne pas laisser d'espace. J'utilise Total Commander pour renommer en masse des fichiers. Ca donne ceci :
C'est plus pratique pour créer le fichier Cuesheet, ça évitera d'y faire du rechercher/remplacer.
Ensuite, pour créer le fichier .cue, j'utilise Exact Audio Copy. Dans le menu "Tools", cliquer sur "Write CD-R". Dans le menu "Layout", choisir "Append files as new tracks" puis sélectionner tous les fichiers Wave. Dans le menu "File", sauver le Cuesheet et voilà !
Il faut maintenant l'ouvrir et remplacer la première piste (qui est la copie de la seconde piste en fait) par la piste de données.
Changer le nom du fichier, remplacer le type WAVE par BINARY, remplacer le type de piste de AUDIO par MODE1/2048 et virer la ligne contenant le PREGAP.
Avant :
FILE "F:\NeoGeoCD\samurai_shodown_piste_01.wav" WAVE
TRACK 01 AUDIO
PREGAP 00:02:00
INDEX 01 00:00:00
FILE "F:\NeoGeoCD\samurai_shodown_piste_02.wav" WAVE
TRACK 02 AUDIO
PREGAP 00:02:00
INDEX 01 00:00:00
Après :
FILE "F:\NeoGeoCD\samurai_shodown_piste_01.iso" BINARY
TRACK 01 MODE1/2048
INDEX 01 00:00:00
FILE "F:\NeoGeoCD\samurai_shodown_piste_02.wav" WAVE
TRACK 02 AUDIO
PREGAP 00:02:00
INDEX 01 00:00:00
Vraiment rien de bien compliqué !
Application du crack
Il s'agit tout simplement d'ouvrir l'image ISO et d'y copier le ou les fichiers crackés. Samurai Shodown 4 possédant une double protection (CD + dans le jeu), il faut remplacer deux fichiers : CPY.TXT et l'exécutable. MagicISO fait ça très bien.
Gravure du CD
Là aussi rien de bien compliqué, mais c'est assez délicat.
Le lecteur de la Neo Geo CDZ est en 1x. Les CD ne doivent pas être gravés trop vite sinon la console aura du mal à les lire. D'après ce que j'ai lu sur le net, il faut graver le plus lentement possible pour éviter de fatiguer le bloc optique de la console. J'ai aussi lu qu'une gravure trop lente sur un CD pourrait cramer celui-ci car les CD actuels sont conçus pour être gravés très vite. Sur mes Verbatim certifiés 52x, je n'ai aucun souci en gravant en 1x.
Le graveur de mon PC ne peut pas descendre en-dessous de 4x, ce qui n'empêche pas les jeux gravés de marcher correctement sur la CDZ. Pour graver en 1x, j'ai trouvé une solution simple mais bourrin : j'ajoute une carte SCSI dans mon PC et je me sers du graveur de mon Atari. C'est un graveur Yamaha qui n'a aucun souci pour descendre en 1x.
Côté logiciels, on peut utiliser Nero. Lorsque l'on sélectionne le fichier Cuesheet, choisir la vitesse de gravure la plus basse possible et lancer la gravure. Si Nero gueule en ouvrant le fichier Cuesheet, c'est peut-être parce qu'un nom de fichier ou un chemin contient des espaces.
On peut aussi utiliser CloneCD qui est très bon. Choisir le mode "CD de jeux". Il ne permet pas de graver à partir d'un fichier Cuesheet. Peu importe, il suffit de monter l'image CD avec un lecteur virtuel comme Daemon Tools|en].
Et les tests ?
C'est simple : si la CDZ refuse de lancer le jeu et reste bloquée sur la page du lecteur audio, il y a eu un problème et le CD est bon pour la poubelle. La protection n'a pas été enlevée ou le CD n'est pas bon.
Ensuite on peut tester les pistes audio (il m'est arrivé d'avoir des problèmes sur les dernières pistes d'un CD), c'est plus rapide directement sur le PC.
Et voilà, on peut enfin faire des copies de sécurité de tous ses jeux Neo Geo CD protégés !
|