Deplomber la protection Ere informatique 2.01
---------------------------------------------
Revision du 12/05/2003 * T&J du GPA
Teste avec succes sur : Macadam Bumper, Strife
Note aux possesseurs de l'ancienne version de Ere Hacking tools :
Cette nouvelle mouture est nettement plus pratique a utiliser que l'ancienne,
et corrige quelques erreurs dans la notice. Les programmes ERE-STOP et ERE-LOAD
ont ete avantageusement remplaces par ERE-BAS et ERE-BIN, qui permettent de
faire des sauvegardes sans avoir a utiliser les bank memoire comme zone de
stockage... Il n'y a meme plus besoin de Hacker !
Un peu d'histoire !
-------------------
Cette protection ancienne a ete utilisee sur pratiquement tous les jeux vendus
par la societe Ere informatique. Oeuvre de Remi Herbulot (programmeur du mythi-
que Crafton & Xunk), elle a pour principale caracteristique de permettre l'uti-
lisation des routines standards de chargement de fichiers (&BC77 et compagnie).
Concretement, tous les vecteurs sont modifies, de façon a utiliser un format
de disquette special, dont les secteurs sont numerotes sans logique apparente
et de plus proteges par des control mark (secteurs marques comme effaces). Le
chargeur de la protection est franchement bien etudie, difficile a comprendre
car faisant de nombreux appels a la Rom Basic. Toute la ram est completement
reecrite, ce qui ne permet pas l'utilisation d'une routine sous interruption
pour la deprotection. Mais, comme vous allez le voir par la suite, il y a un
defaut a la cuirasse...
Materiel requis : Un editeur de secteurs (Discology ?)
128ko de ram !
CPC (pas CPC plus car la protection plante dessus !)
Maxam (un assembleur)
* Premiere chose a faire, recenser les fichiers du programme a deplomber. L'on
va s'acquitter facilement de cette tache grace a un utilitaire, ERE-CAT, qui
se sert d'une routine du Dr Speedy, publiee dans un ancien Crazy croc.
Lancer le programme, noter le nom des fichiers detectes, leur adresse
d'implantation et leur longueur.
* Deuxieme etape, faire une copie du disque original !
* Troisieme etape, bloquer le chargeur du jeu en alterant le catalogue
de la disquette copie. Deux cas de figure, selon que le chargeur soit en
Basic ou Binaire.
* Basic : editer la piste 1, secteur &48 de la copie, et remplacez les
octets 14 et 15 par des 0.
* Binaire : editer la piste 1, secteur &48 de la copie, et remplacez
l'octet 12 par sa valeur moins un.
Attention, si le chargeur n'est pas le premier fichier de la liste, il faut
tenir compte de sa position sur le catalogue (rajouter &20 aux valeurs
ci-dessus s'il est en deuxieme position, &40 s'il est en 3eme, etc... )
Ces modifications vont nous permettre de stopper le chargement du jeu, sans
perdre la precieuse routine speciale de chargement de la protection ! Cela
parait incroyable, mais cela fonctionne !
* Quatrieme etape : preparer la routine de sauvegarde
A cet instant, il faut distinguer deux cas :
- Le programme a sauvegarder est un fichier binaire. Utiliser le programme
ERE-BIN.BAS. Il stocke en memoire etendue (bank &C4) trois routines :
* en &4000 : lecture du secteur Catalogue de la disquette originale
* en &4003 : ecriture du secteur Catalogue correct sur la disquette de
copie.
* en &7000 : copie en &BE80 de la routine de sauvegarde.
- Le programme a sauvegarder est un fichier Basic. Utiliser le programme
ERE-BAS.BAS. Lui aussi poke en memoire trois routines. Les deux premieres
sont exactement les memes, la troisieme est differente. Elle copie en
&A000 une routine qui charge le fichier Basic voulu, reinitialise le CPC,
puis sauvegarde le fichier Basic.
Important ! Si le fichier Basic est protege (P), cette routine ne retire
pas sa protection. Il faudra alors utiliser un programme adapte pour rendre
le fichier lisible (cela ne manque pas sur CPC... ).
Charger avec Maxam le programme SAVEBAS.ASM ou SAVEBIN.ASM, en fonction du
type de fichier que vous allez sauver. Renseignez le nom du fichier, son
adresse d'implantation et sa longueur. Assemblez ensuite le source.
Vous obtenez un fichier SAVEBAS.BIN ou SAVEBIN.BIN adapte a la sauvegarde
du fichier convoite.
* Cinquieme etape : preparation finale !
Lancez le fichier ERE-BAS.BAS ou ERE-BIN.BAS
- Inserez la disquette originale. Le programme Basic va lire le secteur
catalogue et le stocker en memoire etendue.
A noter que si le fichier que vous voulez recuperer n'est pas le loader
du jeu, vous pouvez mettre directement la disquette de travail.
- Inserez ensuite la disquette de travail.
- Tapez la commande de lancement du jeu (en general, RUN"ERE).
Si tout va bien, le chargement devrait se finir par un beau message Error in
xxxx, et le cpc vous rend la main !
A partir de la, faire un OUT &7F00,&C4 pour acceder aux routines creees par
ERE-BAS ou ERE-BIN.
- faire un CALL &4003 si vous avez besoin de regenerer le catalogue (lorsque
vous recuperez le loader du jeu).
- faire un CALL &7000 pour implanter en memoire la routine de sauvegarde.
- Faire un OUT &7F00,&C0 pour revenir en memoire centrale.
- si vous sauvez un fichier Binaire :
* chargez le programme convointe en ram avec la commande Basic LOAD
* inserez dans le lecteur la disquette de sauvegarde
* tapez CALL &BE80.
-> Le fichier s'enregistre, puis le CPC fait un reset.
- si vous sauvez un fichier Basic :
* tapez CALL &A000.
-> Le fichier se charge en memoire, puis le border devient bleu
* Inserer dans le lecteur la disquette de sauvegarde
* Appuyez sur une touche.
-> Le fichier s'enregistre, puis le CPC fait un reset.
Cette operation est a reproduire autant de fois qu'il y a de fichiers sur la
disquette de travail. C'est peut-etre long, mais certainement moins que si
vous n'aviez rien pour faire ce transfert !
Rappel ! Les fichiers Basic proteges avec l'option P ne sont pas deproteges
par la sauvegarde. Il faut utiliser un programme de suppression de cette
protection pour les rendre lisibles.
Une fois cette tache accomplie, il faut jeter un oeil sur le chargeur du jeu.
Si c'est du Basic, normalement, il n'y a rien a faire pour que le programme
fonctionne.
Si c'est un chargeur binaire, il deja le charger en memoire avec un programme
Basic. Il faut aussi verifier s'il fait appel a des routines du loader special
de Remi Herbulot (dans le chargeur de Macadam Bumper, il y a un beau
CALL &BEC6). Il faut simplement supprimer ces appels, et le chargeur doit
fonctionner sans accroc.
Attention, si les programmeurs du jeu ont decide d'utiliser en plus une autre
protection (test de secteurs non conformes), il faudra cracker cette protection
la. Mais c'est franchement rare sur des jeux Ere, je ne l'ai personnellement vu
que deux fois, sur QIN, et sur un jeu nullissime de la compilation ERE hits 1,
Mission 2.
Limites connues
---------------
Si vous voulez sauver un fichier binaire tres gros, il se peut que vous ne
puissiez pas le charger directement a partir du Basic. Il faut alors utiliser
la routine SAVEBAS.ASM en la modifiant de facon a sauvegarde le fichier sous
une forme Binaire. Pour l'instant, je n'en ai jamais eu besoin...