APPLICATIONS ★ Cours de Bidouilles: LMDSPTDVIDUQSTDS "Méthode De Septh Pour Trouver Des Vies Infinies Dans Les Jeux Qui Sont Trop Difficiles Sinon" (2e PARTIE) ★

Cours de Bidouilles - Lmdsptdviduqstds 2

Bon, voici la suite de la désormais fameuse (qui a dit "fumeuse" ?) "Méthode De Septh Pour Trouver Des Vies Infinies Dans Les Jeux Qui Sont Trop Difficiles Sinon". Si ma mémoire est bonne (et normalement, elle devrait l'être, vu que je viens à peine de finir de relire l'article du mois dernier), on avait pris pour exemple cet excellllent jeu qu'est ISS. et on en était arrivé à un point crucial, celui de trouver l'endroit dans le programme où le programmeur décide du nombre de vies allouées au joueur. C'est-à-dire que nous avions recherché un certain nombre de chaînes hexadécimales, correspondant à autant de manières différentes de ranger, en assembleur, une valeur en mémoire. Nous avions même évité un piège ridicule, à savoir que le programmeur poke un 2 au lieu d'un 3 (les vies sont comptées de 0 à 2 et non de 1 à 3). Il nous était même possible de remplacer, dans la chaîne, ce 02 par un FF pour obtenir 255 vies, ce que n'importe quel cracker débutant devrait être capable de faire. Nous allons donc maintenant passer aux choses sérieuses : empêcher ce nombre de vies de diminuer.

Or donc, Discology avait trouvé trois fois la chaîne 3E-02 (LD A,2 en assembleur) sur la disquette (piste 4, secteur 46, adresse 012E pour la première, piste 9, secteur 43, adresse 01E1 pour la deuxième, et enfin piste 9, secteur 44, adresse 00C7 pour la dernière). Pour déterminer laquelle de ces trois adresses est la bonne, il va nous falloir désassembler le programme.

Discology va le faire pour nous : après s'être positionné sur la bonne piste et le bon secteur, on déroute le menu "Afficher" et on choisit l'option "Désassembler écran". Disco demande alors l'adresse de début, on répond par celte trouvée (dans le premier cas, 012E). Vous trouverez les désassemblages des trois adresses trouvées dans le tableau 1.

---------------------------------------------------------
 P4/S46/A012E      P9/S43/A01E1        P9/S44/A00C7
---------------------------------------------------------
 LD A,02           ;LD A,02             ;LD A,02
 CALL &BC0E        LD  C,&06           ;LD   (&B02D),A
 LD  BC,&00        CALL &02E2          ADD  A,&30
 ...             ;  ...               ;  ...
---------------------------------------------------------

Et qu'est-ce qu'on en déduit-on ? Dans la première colonne de ce tableau, on voit que le programme met l'écran en mode 2 par appel du vecteur &BC0E. Ce n'est donc pas l'adresse qui nous intéresse, on peut l'oublier.

Dans la deuxième colonne, le programme charge la valeur 2 dans le registre A, puis la valeur 6 dans le registre C et appelle enfin un sous-programme situé en &02E2. Il n'y a que peu de chances que ce soit la bonne adresse.
Reste donc la troisième colonne : le programme charge la valeur 2 dans le registre A. et sauve cette valeur à l'adresse &B02D. Ca pourrait très bien être ça (reportez-vous au tableau donné le mois dernier sur les différentes manières de poker en assembleur).

Mine de rien, nous avons fait un grand pas en avant : nous savons maintenant à quelle adresse est stocké le nombre de vies (il s'agit de &B02D). Du coup, nous allons pouvoir nous servir à nouveau de la fonction de recherche de Discology, pour trouver toutes les fois où le programme fait référence à cette adresse. Nous finirons bien par trouver une suite d'instructions du genre du tableau 2.

---------------------------------------------------------
Instruction       Codes HEXA      Le même, en Basic
---------------------------------------------------------
LD  A,(&B02D)     3A-2D-B0        a=PEEK(&B02D)
DEC A             ;3D             ; a=a-l
LD  (&B02D),A     32-2D-B0        POKE &B02D,a
---------------------------------------------------------

Ces codes hexa ne vous semblent-ils pas familiers ? Allons, allons, réfléchissez un peu, je suis sûr que si... Ben oui, on les retrouve souvent dans "Le coin du discobole" dans cette même rubrique...

C'EST TOUT POUR AUJOURD'HUI

Eh ouï, je ne peux malheureusement pas remplir toute la rubrique avec seulement LMDSPTDVIDUQSTDS, c'est bien dommage. Les plus doués devraient maintenant être capables de trouver comment empêcher le nombre de vies de diminuer (mais VRAIMENT les plus doués, parce qu'il y a encore un piège...). Les autres devront attendre le mois prochain, grrr, je les sens déjà enrager.

Amstrad 100 % n°17 juillet/aout 89 - page 058

★ ANNÉES: 1989
★ AUTEUR(S): ???

Page précédente : Cours de Bidouilles A100 - Lmdsptdviduqstds 1 (Amstrad Cent Pour Cent)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 088 millisecondes et consultée 819 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.