
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...otection ancienne a et
