Master Toolkit
----------------
Tom et Jerry du GPA (c) fevrier 2005
Mise a jour du 12 mars 2005
La protection "Master" est une protection francaise, utilisee sur certains
logiciels Loriciels. Elle se compose d'une protection physique sur la piste
39 (10eme secteur non reproductible par Discology 6.0) et d'un loader code.
Cette protection est generee avec un programme cree probablement par Pascal
Jarry, programmeur de son etat (MGT, etc...)
On retrouve sur la plupart des programmes proteges la partie basic du
generateur du programme protege (voir fichier BASIC.BAS !). Pas de chance,
on ne retrouve evidemment pas les modules assembleur utilises par ce
precieux programme.
La protection est a priori efficace. Lorsque l'on commence a essayer de
comprendre le chargeur, on bute sur des codages nombreux, et sur un loader
lui-meme code/decode pendant le chargement du programme protege.
Par un hasard heureux (est-ce vraiment un hasard... ), il existe une faille
enorme qui permet facilement d'outrepasser toutes ces protections.
Comment reconnaitre une protection Master ?
-------------------------------------------
La disquette est formatee au format VENDOR. Le secteur &47 de la piste 0 a
une marque de controle (/CM sous Discology) et contient le loader final du
programme. Le loader initial est un fichier de 2ko implante en &7730.
Si vous stoppez le chargement du logiciel avec un Hacker, vous avez un loader
en &40 qui en charge un autre implante en &A9B0. Le loader en &A9B0 est
a priori code/decode a chaque appel, ce qui explique qu'il soit la plupart du
temps incomprehensible (il est decode lors de l'appel final au programme).
A noter qu'il exister plusieurs versions de la protection Master, celle
utilisee par Tennis 3d n'utilise pas le meme loader final. Sur ce jeu, le
loader est implante en &A0B0 et n'est pas code.
Comment detourner une protection Master ?
-----------------------------------------
Cela semble etonnament simple, mais en piste 0 secteur &47, il y a en &8A
l'adresse de saut vers le programme charge ! Il suffit de remplacer cette
adresse par une autre, appeler une routine de sauvegarde, et le tour est joue.
Bien evidemment, la protection utilise une bonne partie de la memoire, mais
elle laisse des octets libres a partir de &BEC0.
La zone est petite, mais suffisante pour aller chercher en memoire etendue
une routine de sauvegarde. C'est ce que fait le programme MASTER.BAS.
Pour la version OLD (Tennis 3d), l'adresse de saut finale est en &A5.
Comment utiliser MASTER.BAS
---------------------------
Attention, il vous faut necessairement 128ko de memoire vive !
Commencez tout d'abord par modifier le loader de votre original avec un
editeur de secteurs. Allez en secteur &47 piste 0, notez les octets en &8B
et &8C, puis remplacez les par &C0 &BE. Utilisez un editeur de secteurs
capable de lire les secteurs ayant une marque de controle (Discology, par
exemple).
Lancez ensuite MASTER.BAS. Il vous demande tout d'abord l'adresse d'execution
du programme a deproteger, puis implante dans un bank de memoire etendue une
routine de sauvegarde, puis une autre routine en &BEC0 (quel hasard), sur
lequel doit pointer le loader trafique.
Lancez le jeu original. Si tout se passe bien, le chargement finit par
s'arreter, le BORDER devient blanc.
Inserez une disquette formatee, et appuyez sur une touche.
Le CPC sauvegarde la zone memoire &0040-&A67B sous la forme d'un fichier A.BIN
executable puis fait un reset. Le programme est en theorie executable, mais
vous pouvez rencontrez ensuite d'autres protections.
Libre a vous ensuite de nettoyer ce fichier pour obtenir un programme propre.
Si la zone memoire proposee ne vous convient pas, modifier les parametres du
fichier MASTER.ASM (source Maxam).
MASTER toolkit a ete teste avec succes sur les logiciels suivants :
Titre Implantation Longueur Execution
----------------------------------------------------------------
Charly diams &08E0 &9B60 &08EF
K.y.a. &0800 &9C80 &98DD
Mata Hari &1000 &9600 &1700
Tennis 3d &4000 &4150 &8002 (old)
Particularites
--------------
Charly diams :
il faut faire un beau POKE &A4C,&C9 pour eviter qu'il essaie de charger un
secteur inutile (routine en &C60).
Mata Hari :
il faut d'abord retirer un codage (en pokant en &1746 les valeurs C8 00 (soit
RET Z et NOP) puis faire un CALL &1700.
Ensuite, faites un poke &C9 en &5B80, en &5B83 et en &5B86 et enfin faire
un CALL &174D pour executer le jeu.
Tennis 3d :
la protecton Master ne concerne que la page ecran du jeu. Pour recuperer le
jeu lui-meme, il faut le charger en memoire via la routine non protegee
implantee en &8080, la detourner, et sauvegarder la memoire avec les
parametres suivants : implantation=&0300, longueur=&80CE, exec=&242E.