Déplombage Mode d'Emploi 09


===============================================================================
INTRODUCTION DEPLOMBAGE MODE D'EMPLOI 9 , AOUT 1988                          G.
===============================================================================
Révision 1.00 , Lachée dans la nature le 1er Oct. 1988, date de l'Apple Expo 88



Salut et salut pour ce 9eme volet de depme.... avec, pour l'accusation :

        - Origin Systems (Ultima 5)
        - Datasoft       (Alternate Reality II , Force 7...)
        - Sierra On Line (Space Quest II , King Quest III..)
        - Epyx , Nexa    (L.A. Crackdown , Deathsword...etc)
        - Microprose     (Pirates!)

et pour la défense :

        - The Highlanders Team (ACS+GDF)
        - The wrong Deny from The ACS-Dijon
        - 'El Mathos' , le roi du codage ?
        - Oliver Twist , plombeur extra-bandant (pjoke)
        - Loockheed + Copperfield + The Jokersoft from The Brain Trust
        - Captain Crack , en free lance..

Godfather au clavier et avec vous tout au long de ce nouveau depme..

Ouf, ca commence à nous faire vieux.. bientot 3 ans 1/2 depuis le numéro 1..
Ca nous rajeunit pas, ça.. madame.

                        LES NOUVELLES RUBRIQUES
                     -----------------------------

Je vous avais promis dans le precedent un dep9 pleins de nouvelles rub'..
et le pari a été tenu. Vous trouverez en effet sur ce disk (2 faces) outre
les nombreux fichiers de déplombage de quelques unes des dernieres news
que l'on a eu le courage de rédiger, les rubs suivantes :

        - Codages            . Un giga-cours par El-mathos, le maitre du codage
        - Plombage           . Deux fichiers par Oliver Twist
        - News               . Un super fichier par The Brain Trust

et quelques ragots par-ci, par-la, parce que ca fait toujours bouger beaucoup
de monde..

                        GOLDEN SHITS et BIG KISSES!
                     ---------------------------------

Vous le remarquerez vite en listant les fichiers de ce depme, la rubrique
big shits a disparu comme dirait l'autre "définitivement jusqu'à nouvel ordre".

C'est marrant le phénomènes "big shits".. j'avais lancée l'idée dés dep1 si ma
mémoire est bonne, et on a été tour à tour accusé de délation, de diffamation,
d'inventer des pseudos "pour faire bien", d'intolérance, etc... mais on a
continué. puis, n'ayant sincèrement plus de quoi remplir cette rubrique (est-ce
que ça en aurait calmé certains par hasard ?), j'ai décidé de l'arreter ds dep8
mais maintenant, on me la réclame.. tout le monde sautait dessus en premier,
etc.. et je me fais critiquer de l'avoir stoppée.. J'ai tjrs été sincère et
laissé la parole à tous - sous leur responsabilité - dans cette rub décapante,
mais je ne vais tout de meme pas me mettre à inventer..

Enfin, le résultat est paradoxal.. Big shits il y a , insultes il y a..
Big shits il n'y a plus , critiques et regrets il y a.. comment réagir ??

De plus, le big shits est une idée qui a fait son chemin puisque Coolware,
le premier journal sur disk, l'a repris sous le noms "Golden shits",
Sygmapple l'a reprise sous le titre "les nazes du mois", et de nombreuses
autres personnes ont aimé glisser un big-shits avec un crack , pour saluer
un de leurs amis préféré.

La dernière fois, je vous entretenais des plagiats des doc on the rocks..
aujourd'hui, on me plagie les big-shits.. mais ca ne peut que me rendre plus
heureux... Toujours copié, jamais égalé ??.. qui sait ??.. tant mieux si
l'on peut faire mieux.. tant mieux et bravo.. mais il faut - meme pour une
rubrique big shits - rester cool et clean, c'est à dire ne pas donner
d'adresses ( impératif! ) et rester correct..

Revenons aux insultes ( méritées ) mais galantes... please!


Coté big kisses, je voudrais saluer quelques amis sur st.. tsunoo, the lord,
(certains comprendrons) et quelques autres.. sur amiga également, hackerlight
et silicon spy "le déserteur", et sur archimède, "beebop"...
BIEN QU'ILS SE SOIENT TROMPES DE MACHINES !!!!..



A noter aussi, avant que je ne parte.. la présentation originelle de ce boot
nous vient des talents de chpi (le code a été refait, windows etc..) et de
chip select.. repiqué au boot de mandragore et adapté ici par The gog's.
(criez "viva!", ca lui fera plaisir!)...



Je vous laisse ici jusqu'à la prochaine fois...

Decembre approche et comme chaque année, c'est la périodé fétiche pour les
éditeurs.. plus de 18 titres annoncés par epyx.. 7 par sierra on line.. etc..
Decombre.. beaucoup d'originaux... beaucoup de déplombages.. et je l'espère,
l'occasion de recommencer ce dialogue au sein de DEPLOMBAGE MODE D'EMPLOI 10,
si Dieu - et les autres déplombeurs de talents! - me pretent vie!.

A bientot donc...

                                                         Sincèrement, Godfather
===============================================================================



Ecran
Ecran
Ecran
Ecran
Ecran
Ecran
Ecran
Ecran
Ecran


Floppy
DOS 3.3
Download DEPME 09 side 1 (gzipped)
Floppy
DOS 3.3
Download DEPME 09 side 2 (gzipped)


Disk : Depme9_f2.dsk
"-" files are DELETED files | "*" files are LOCKED files
----------------------------------------------------------------------
 A A$0000 (000000) L$0022 (000034) 002 HELLO
 B A$0300 (000768) L$0030 (000048) 002 PROG1
 B A$0300 (000768) L$0010 (000016) 002 PROG10
 B A$0300 (000768) L$0050 (000080) 002 PROG11                       
 B A$0300 (000768) L$0080 (000128) 002 PROG12
 B A$0300 (000768) L$0030 (000048) 002 PROG2
 B A$0300 (000768) L$0030 (000048) 002 PROG3
 B A$0300 (000768) L$0030 (000048) 002 PROG4                        
 B A$0300 (000768) L$0070 (000112) 002 PROG5
 B A$0300 (000768) L$0040 (000064) 002 PROG6                        
 B A$0300 (000768) L$0068 (000104) 002 PROG7
 B A$0314 (000788) L$001C (000028) 002 PROG8                        
 B A$0300 (000768) L$002D (000045) 002 PROG9
 T A$0000 (000000) L$2300 (008960) 035 T.CODAGE PART 1
 T A$0000 (000000) L$5300 (021248) 083 T.CODAGE PART 2
 T A$0000 (000000) L$5800 (022528) 088 T.CODAGE PART 3
 T A$0000 (000000) L$5900 (022784) 089 T.CODAGE PART 4
 T A$0000 (000000) L$1A00 (006656) 026 T.L.A. CRACKDOWN 1
 T A$0000 (000000) L$2D00 (011520) 045 T.BORROWED TIME
 T A$0000 (000000) L$0A00 (002560) 010 T.NEWS APPLE II
 T A$0000 (000000) L$1100 (004352) 017 T.L.A. CRACKDOWN 2
 T A$0000 (000000) L$0D00 (003328) 013 T.AMERICAN ROAD RACE
 B A$8800 (034816) L$00CA (000202) 002 DEP9
 T A$0000 (000000) L$1200 (004608) 018 T.INDOOR SPORTS
 T A$0000 (000000) L$1B00 (006912) 027 T.BALANCE OF POWER V2
 T A$0000 (000000) L$0F00 (003840) 015 T.REGLEMENT GDF CHEST 89

This catalog contains 26 files. 0 were DELETED.
----------------------------------------------------------------------



Sommaire


Lien Article
Voir Face 1 : ALTERNATE REALITY II.
Voir Face 1 : DEATHSWORD.
Voir Face 1 : FORCE SEVEN.
Voir Face 1 : KING QUEST III.
Voir Face 1 : PIRATES.
Voir Face 1 : PLOMBAGE OLIVER 1.
Voir Face 1 : PLOMBAGE OLIVER 2.
Voir Face 1 : PROGRAMMATION SOURIS.
Voir Face 1 : SPACE QUEST II.
Voir Face 1 : ULTIMA V.
Voir Face 2 : AMERICAN ROAD RACE.
Voir Face 2 : BALANCE OF POWER V2.
Voir Face 2 : BORROWED TIME.
Voir Face 2 : CODAGE PART 1.
Voir Face 2 : CODAGE PART 2.
Voir Face 2 : CODAGE PART 3.
Voir Face 2 : CODAGE PART 4.
Voir Face 2 : INDOOR SPORTS.
Voir Face 2 : L.A. CRACKDOWN 1.
Voir Face 2 : L.A. CRACKDOWN 2.
Voir Face 2 : NEWS APPLE II.
Voir Face 2 : REGLEMENT GDF CHEST 89.

hr DEPME

Face 1 : ALTERNATE REALITY II.


-------------------------------------------------------------------------------
ALTERNATE REALTITY (PART 2 : THE DUNGEON)                       The Highlanders
-------------------------------------------------------------------------------

Pour déplomber ce soft, no problem :

Sur une copie locksmith de la première face, modifiez avec un sector éditor
style copy II+ 5.x, le secteur suivant :

piste $00 secteur $05 octet $46 : EA EA EA EA (C9 DE D0 ED)
et en ram, ca donne quelque chose comme $4A46

Comme quoi Datasoft ne progresse guère ces temps-ci..


                                           Amicalement, Godfather and the Gog's
-------------------------------------------------------------------------------


Retour sommaire

hr DEPME

Face 1 : DEATHSWORD.


===============================================================================
WHERE IN EUROPE IS CARMEN SAN DIEGO? (c) BR0DERBUND        The Highlanders Team
-------------------------------------------------------------------------------
DEATH SWORD + STREET SPORTS BASKETBALL (c) EPYX           GODFATHER and THE ACS
-------------------------------------------------------------------------------

Vais-je oser dire que comme d'habitude, c'était la meme chose que le
précédent Epyx, c'est à dire Boulder Dash Construction Kit.. cf depme8 ?
Epyx a en effet vendu son plombage à pas mal de boites, dont Spectrum Holobyte
(si ce n'est Holobyte Spectrum, boite qui a déjà fait faillite deux fois et
qui est en passe de le faire une troisième!). et dans le tas, n'en déplaise à
Gustavson, à BR0DERBUND exceptionnelement pour Carmen san diego..
bref, pour cracker tous ces softs, vous avez deux solutions..
soit vous rendre dans deplombage mode d'emploi 8, précédente oeuvre de notre
génie créatif et déplombeur personnel et collectif (ça y est, il recommence!)
au fichier de boulder cst par exemple, et de world games (pour les softs en
ProDOS) soit de vous rendre sur votre minitel pour me demander mes cours de
déplombage 10 et 10.2, sur disk..pour tout comprendre dans tous les sens,
et pour que vous puissiez vous adapter aux futurs epyx par exemple..

A noter - et ma foi, je réserve ça à tous ceux qui m'appeleront - j'ai meme
pondu un jour de pluie, un déplombeur automatique de softs epyx, un copieur
Epyx et un diagnostiqueur de la protection epyx (paramètres modifiés) !..

Pour ces trois cracks, donc.. allez au moins vous deplombage 8..

-------------------------------------------------------------------------------


Retour sommaire

hr DEPME

Face 1 : FORCE SEVEN.


 _____________________________________________________________________________
!                                                                             !
! Cracking of FORCE 7     (C) DataSoft     COPPERFIELD & LOOCKHEED, le 8/7/88 !
!_____________________________________________________________________________!



   Voici donc le cracking d'un soft acheté par le Black Chest (auquel toute
personne sensée devrait etre un membre...). Ce soft est fait par une des
nombreuses sous-boites de Datasoft : Intellicreations, la meme boite, ou plutot
le meme programmateur qui avait fait Dark Lord, jeu d'aventure avec de superbes
musiques. Ce programmateur, Kyle Freeman, est à l'origine des musiques de Dark
Lord et de celle de Force 7 (soit dit en passant : toutes ces musiques sont
extraites et en catalogue, et seront réunies dans un recueil de musiques que
nous vous concoctons), chaque fois que vous verrez son nom, à la présentation
d'un soft, attendez-vous à avoir des musiques agréables aux tympans usés par le
bruit sourd du <CTRL-G>.



   Ceci-dit passons au déplombage proprement dit : malgré un beau soft, un
plombage trés médiocre, et à plombage rapide, déplombage rapide; à classer dans
les "déplombages minute".

   Tout d'abord premier test : essai de copie au LFB (Locksmith Fast Backup).
Résultat : le soft se laisse copier sans aucun problème, jusqu'à la piste $1D.
(Aprés cette copie sans problèmes majeurs, on se dit "facile !")
 
   Que cela ne tienne, essayons de booter la copie.
Résultat : un message trés sympathique et trés plaisant: "PLEASE USE ORIGINAL",
Ce qui est trés sympa pour nous, car le message n'est codé d'aucune façon,
comme tout etre sensé l'aurait fait par un EOR, AND, ou le fait de mettre le
message à l'envers, enfin...
(A ce moment on se dit "trés facile !") premier réflexe chercher le message
qui nous amène au plantage, simple, une fois arrivé à ce message fatidique,
faire un reset et booter un David Dos 1 (et si vous ne l'avez pas, comme moi,
malgré son utilité, faites vous rapidement un mover en page texte),
chercher le message, en remontant au dessus de ces mots doux, on trouve la
routine qui affiche ce message, en $1ECC soit P$01/S$E/$CC sur le disque,
rappelons nous-en on en aura besoin pour l'ultime phase...

   Maintenant grace à ce meme David Dos, chercher $CC 1E en ram, ce qui
correspondrait soit à un JMP $1ECC (4C CC 1E) soit à un JSR, un BEQ, etc...
   Une fois trouvé on regarde ce qui se passe au dessus et ainsi on arrive à
remonter jusqu'à la RWTS de Force 7, son point d'entrée est en $1E00 mais c'est
en $1EF9 que ça ce passe, et on voit vers cette adresse de nombreux $C08C
("Q6L", permet la lecture des nibbles...), suivis de CMP et BNE pas du tout
cathodiques, ils correspondent à la vérif' des bonnes entètes, autrement dit on
a mis le doigt sur la vérif'!!!

   On est content, on a trouvé la vérif', alors quoi? Et bien on NOPe tout ça
(assez bestialement, il faut dire), donc en P$01/S$F, mettre à partir des
octets suivant inclus, quatre $EA : en $25, $2E, $37, $46, $4F, $58, et $61.
Seulement voila si on laisse ça comme ça et que l'on boote la disquette, on
s'apperçoit rapidement qu'une fois sur quatre nous avons encore la joie et le
privilège de voir apparaitre sur l'écran la phrase magique "PLEASE USE
ORIGINAL", pourquoi? Parcequ'il arrive, à cause de tous les NOP que l'on a
mis que la RWTS, n'est plus aussi fiable qu'avant, elle n'arrive pas à bien
lire sur la disquette, car elle n'a plus de points de repères.

   L'ultime phase :
   Ben alors on est fichu? Si on ne peux meme pas compter sur la RWTS...?
Non car puisque la RWTS de Force 7 saute à la routinne qui affiche le texte,
dans deux cas seulement : en présence d'une copie ou en cas de mauvaise lecture
(quoique c'est le cas précédent qui entraine celui-ci!!!), et bien nous
n'avons qu'à mettre au début de cette routinne qui nous affiche le message
fatidique (pour l'instant!!!) un JMP début de routinne de lecture.
   Soit, pour concrétiser cette idée : mettre en P$1,S$E,$CC (ce qui correspond
donc au début de l'afficheur du message) : 4C 00 1E (à la place de 2C 81 C0)
   Ainsi les deux cas ne sont plus envisageables : d'un nous avons NOPé les
vérifs et de deux nous avons annulé le cas de mauvaise lecture qui ne se
produisait environ une fois sur quatre puisque dans ce cas précis on
recommence à lire.



   Il faut avouer que faire un fichier bien explicité sur le déplombage, prend
plus de temps que déplomber ce soft (10mn! contre plus de 45mn pour le
fichier!!! ).
 Pour tout vous dire sur ce soft et sur ce qui vous attend : une version fixée
du jeu fue faite par Captain Crack & The Jokersoft, mais nous nous rendimes
comptes que (comme souvent) que le jeu fixé perdait tout son intéret car une
fois arrivé à la fin du jeu (ce qui est enfantin avec la version fixée), il ne
se passe rien, pas de scrolling, pas de musiques, RIEN. C'est alors que nous
décidames de mettre une animation pour récompenser comme il se devait le
vainqueur du jeu, et pas n'importe quelle animation! Une animation en DHGR
monocromme, ce qui est à ma conaissance une premiere, sachant que cette
animation sera faite à la main (sans utilaire... )!!!

  Alors à trés bientot pour une nouvelle version de Force 7, appelée Force 7.2!


  _ _ _ _ __ ______ _ _ __ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ __ _ _ _ _ _ _ _ _
 F_O_R_C_E__7______(_K_)__B_Y__C_O_P_P_E_R_F_I_E_L_D__A_N_D__L_O_O_C_K_H_E_E_D


Retour sommaire

hr DEPME

Face 1 : KING QUEST III.


===============================================================================
KING QUEST III                                    (k) Godfather , Steff , Loic.
===============================================================================

Pour déplomber ce soft, il suffit de faire une copie locksmith de toutes les
faces, puis de modifier l'octet suivant :

        Piste $02 08 12 , mettre : 2C au lieu de 20.

Simple?.. peut etre..

Avant de vous laisser après un aussi bref commentaire, je voudrais vous
faire part du cas suivant.. non pas pour me vanter de quoi que ce soit que
vous pourriez imaginer ( certains ont toujours tellement d'imagination en
parlant de moi.. ce sont les faits. ) mais pour vous donner mon point de
vue sur un probleme à mon avis grave, et pour éviter qu'un tel pb se
renouvelle jamais.

Je vous retrace tout. et que l'on ne vienne pas me dire après que ce baratin
est en trop sur ce disk.. que ceux qui n'aiment pas s'en aillent.. moi je
continue.

Début juin 1988 environ, un certain _____ m'annonce par minitel qu'il a
recu l'original de king quest 3.  et qu'il va essayer de le déplomber..

Très heureux de cet appel, je lui demande de bien vouloir m'en adresser une
copie dés qu'il l'aura déplombé.. et lui affirme qu'il pourra avoir mon aide
technique s'il la désire pour ce déplombage. Nous avions déjà fait de nombreux
échanges et je ne faisait que lui en demander un de plus, je n'exigeait rien.

Il me répond presque aussitot qu'il ne veut pas me le filer.. qu'il veut garder
l'original pour lui, sous peine que Sierra On Line le retrouve affirme-t-il..
Ca m'a fait rire qu'on puisse penser etre traqué à ce point.. et je lui ai
affirmé qu'il ne risquait rien et que je n'avais jamais gardé un original
plus de deux jours après l'avoir déplombé.. sauf exception explicable.

Enfin, il me poste une copie de king quest 3.. déplombée.. mais uniquemet
de la première disquette en me demandant :

        1. De bien vouloir vérifier son déplombage ( ce qui est impossible
           sans une copie de l'original . Comment savoir s'il a bien converti
           le disk s'il était en format différent 3.3 , comment savoir ce qu'il
           a modifié s'il ne me le dit pas.. etc....)
        2. De bien vouloir coder sa signature sans rajouter la mienne.
        3. De bien vouloir lui renvoyer le tout.
    et, 4. De bien vouloir attendre après lui, deux ou trois semaines avant
           qu'il veuille bien me poster toutes les faces du jeu..

Vous imaginez le truc..?

Je lui renvoie un courrier en lui expliquant que j'ai besoin de l'original
pour faire ce qu'il veut, ou dumoins d'une copie intacte.. que je ne la
signerais jamais de mon nom comme il le désire... etc.. et que je voudrais
une copie de toutes les faces en lui démontrant cette fois par A+B qu'il
ne cours aucun risque du coté des éditeurs, etc..

Et là, si ma mémoire est bonne, plus de réponse..

Par contre réponse du coté de Loockheed.. "Je te file une copie de KQ3 si
tu me files des news..". Ce n'est plus un échange mais une tyrannie!..

Et loockheed ne l'a pas eu.. et ___ ne l'a pas laché !


Voici pour conclure, et c'est là que je tenais à arriver, la lettre
que je lui ai posté au moment où j'ai recu king quest 3 d'une autre source
et que je l'ai déplombé.

Croyez bien que je n'expose pas ainsi ma petite vie dans aucun but sinon
celui de faire évoluer certaines mentalité qui ne collent pas très bien
avec ma conception de ce qu'est l'esprit Apple.

Si je ne le fais pas, personne ne le fera.. et ce serait dommage.


Voici donc..






Salut ___ ,

Trouve ci-joint une copie de la face A de King Quest 3.. bien déplombée.
et en face B, force 7.

Ta version de King Quest était en effet mal déplombée comme je te l'avais
laissé supposer. Pour déplomber un logiciel et etre sur qu'il est proprement
déplombé, il faut absolument tout décortiquer de sa protection, et tout en
comprendre donc. Sans cela, sans ces connaissances indispensables sur chacune
des protections présentes sur chacun des softs que l'on déplombe, on ne peut
etre sur de rien.

Pour déplomber ce soft, on a du te dire que la protection était en $FF00
(vérif) et tu as trouvé deux fois la séquence 20 00 FF correspondant aux
instructions JSR $FF00 soit JSR Vérif_Original. Seulement, une seule devait
etre enlevée. L'autre correspondait non pas à une instruction jsr, mais
à des données héxadécimales 20 00 FF. ( image du jeu ou données quelconques
du programme).

En modifiant la première séquence, en effet tu déplombais ce soft..
et le plantage disparaissait. mais en modifiant aussi la seconde, tu entrainais
un bug dans des données indispensables au bon déroulement de tout le soft..
et ta version devrait etre déformée quelque part.. meme si ca ne se voit pas
après x heures de jeu.. ces données étaient là, elles servent donc à quelque
chose.. et les modifier entraine une conséquence impitoyable sur le bon
déroulement du jeu. Ta version est donc buguée.. comme si c'était une mauvaise
copie.

Je donne des cours de déplombage pour vous permettre de ne pas déplomber des
softs au feeling mais en comprenant tout de toutes les protections..

Je ne te reproche rien, crois le bien.. je ne suis pas un emmerdeur ou un
vantard. juste que j'ai pas trouvé très cool de ta part de refuser de poster
à tout le monde, et entre autre à moi meme, ton original (ou une copie)
pour vérifier simplement ton crack.. et pour l'avoir sans l'attendre plus
longtemps puisque cette fois-ci, tu as eu un soft avant nous.

Tu vois je te l'envoies dés que je l'ai.. et non bugué..
et Force 7 également.. dés que je l'ai..

C'est ca etre un cracker.. alors essaye d'etre un peu plus cool.
et j'oserais dire, un peu plus intelligent dans tes rapports humains.

Je ne veux pas etre méchant, ce n'est pas mon style.. je suis un pacifiste,
mais essaye de revoir ton jugement sur ce probleme d'originaux à la prochaine
occasion. ok?

J'espère - sans penser interet pour ma part en premier , crois le bien - que
tu continueras à prendre des cours de dep. car ca te permettra je pense
de vraiment cracker les softs proprement et seul.. et de les signer seul.

Le probleme de la signature d'un crack n'en est pas un pour moi.
Tu vois parfois passer des softs dans ton drive signé par un autre..
alors que j'en suis le cracker. On m'a filé un original en me demandant de
bien vouloir le signer du pseudo du mec qui me l'a filé, tout simplement.
et ca ne me dérange pas. je ne me vexe pas, ni ne me froisse avec personne
dans ce cas.. je reste ok.

J'espère que tu comprendras pourquoi je t'écris en ce terme.. mais aussi
mon état d'esprit.. mon seul but : que tout le monde partage les softs
qu'il peut recevoir dés qu'il les recoit pour faire vivre la machine le
plus longtemps possible.. et peut importe qui les déplombe, et qui met
son nom dessus.. c'est primaire de penser comme ca, et de vivre pour ca.

                                                         Sincèrement, Godfather





Merci de m'avoir suivi jusqu'ici. et désolé pour ceux que ça a géné..  (sorry!)
===============================================================================


Retour sommaire

hr DEPME

Face 1 : PIRATES.


+-----------------------------------------------------------------------------+
!  PIRATES   (C) MICROPROSE         BY DENY & THE GOG'S FROM THE HIGHLANDERS  !
+-----------------------------------------------------------------------------+

Bonjour à tous et à toutes....ici, c'est votre amour de toujours: DENY....

Sans plus attendre, voici le tout dernier crack du tout dernier tout bo soft de
chez nos amis de Microprose: j'ai nommé: PIRATES !!!!!
Voilà un original qu'il est bo !!! C'est un très chouette jeu, en Dhgr,
qui parle, non pas du paysage informatique français, mais des combats entre les
Corsaires et la Royale aux XVIe et XVIIe siècles...Super, non ?????

Ayant dit ce que j'ai à dire, voyons à présent ce qu'il en est du plombage :

Vous connaissez la dernière nouvelle ?? Et bien Microprose a changé de
protection ! Je sais pas si vous vous souvenez des vieux plombages
Dos 3.3, mais c'était coton pour les déplomber parfaitement !!!!
( à ce sujet, reportez-vous à l'article de Super-Hacker dans Dep7...).
Et bien, avec l'arrivée du Prodos dans leurs softs ( Pirates est sous Prodos ),
Microprose s'est dit: eh ben, on va p't-etre leur changer la protection, à nos
gaillards, comme ça, ils l'auront dans l'os, les déplombeux !!! Ventrebleu !!!

Et bien, en fait, on l'a vraiment dans l'os, car cette protection est à peu
près aussi folle que l'ancienne !!!!!

- Et alors, moussaillon, elle nous cause de quoi, cette protection ???

- C'est bien simple, cap'tain...
  Prenez le Nibble Editor du Locksmith, et de là, lisez une piste ( ctrl-R,
  pour ceux qui ne savent pas...) de Pirates.Puis, tapez D....vous verrez alors
  s'afficher le numéro de la piste et les numéros des secteurs qui se trouvent
  sur ladite piste....Regardez attentivement les numéros de ces secteurs :
  Vous vous apercevrez qu'ils sont assez foireux...ainsi, on peut remarquer un
  secteur $13 alors que dans un Dos normal, les secteurs vont de $0 à $F ....
  On peut remarquer aussi que les checksums des champs d'adresses sont erronés!

  Le Prodos de PIRATES est patché afin de pouvoir, sous des conditions de
  timing assez folles, lire les secteurs avec des numéros bizarres, et cela
  sans faire attention aux checksums...Je n'en dirai pas plus car le
  principe en est assez balaise......Ce qu'il faut savoir, c'est que ces
  recherches de nibbles basées sur les timings rendent l'original incopiable...

                        ____________________________

               * DEPLOMBAGE DE PIRATES  (c) 1987 MICROPROSE *

Il faut, pour déplomber ce soft, démuffiniser l'original....C'est pour cela
que j'ai conçu un petit module RWTS pour ADVANCED DEMUFFIN 1.1....
Il se trouve sur une des faces de ce DEPME, sous le nom: ' MODULE PIRATES '.
Voici comment l'utiliser: chargez Advanced demuffin 1.1. De là, faites:
' load new rwts module ' puis tapez B6...puis ' MODULE PIRATES ', après avoir
inséré DEPME, of course...Une fois ceci fait, convertissez les deux faces
de PIRATES grace aux commandes habituelles......

Prenez ensuite un éditeur de secteurs, et modifiez le numéro de série de
l'original qui se trouve en T$0D S$04 à partir de l'octet $36....Vous pouvez,
par exemple, le remplacer par une suite de 0 ( code hexa:30 )......

Puis, il faut avec ce meme éditeur de secteur modifier :
T$04 S$04 octet $63:A9 00 48 68 60 1B   (was: A9 D1 85 18 A9 BE)...
J'explique....The Gog's et moi-meme, on s'est apercu que si on modifiait ne
serait-ce qu'un infime octet du programme, celui-ci marquait ' access error '.
En effet, le programme contient une sous-routine qui teste le contenu de la
mémoire...cette meme sous-routine est vérifiée par une autre routine pour voir
si elle n'a pas été killée...Bref, c'est l'enfer !!!!
Par les modifications précédentes, on kille la routine qui teste la mémoire
, et on met un octet bidon ( le 1B ) judicieusement choisi pour obtenir un
checksum identique à la routine originale ( si vous ne comprenez rien, c'est
pas grave....c'est fait pour !!!!), comme ça, la routine qui vérifie si la
routine de test de la mémoire n'a pas été killée ne voit rien....

Mais tout cela n'est rien, en fait...le gros morceau, ce qui fait que
cette protection est presque aussi dure que les anciennes de Microprose
( en Basic compilé ), c'est la manière dont la demande de code est traitée...
Je pense que vous savez tous ( Tous ? (private joke)) que les Microproses
demandent des codes ( qui se trouvent dans la doc ), pour faire fonctionner
correctement le programme ( exemple: F15 strike Eagle )....Pirates n'échappe
pas à la règle, et avouez qu'il est génant de se voir demander quand est arrivé
le Silver Train à Panamana ( en 1660, certes, mais quel mois ????), alors qu'on
a pas la doc et que c'est le seul endroit où on pourrait trouver la réponse...
( quoique j'ai pas essayé le Quid...)....Non ????
C'est pour ça que, dans un élan de générosité ( et surtout parce que The
Gog's a réussit à me trouver la doc...), je vous ai tapé les codes de ce
superbe jeu....codes que vous retrouvez ci-joints à ce blabla...Merci qui ?
( Au fait...j'offre un gros gateau à celui qui arrivera à me faire sauter
la vérif du code...ce que j'ai jugé ( mais ce jugement n'engage que moi...)
tout à fait impossible !!!)

                        ____________________________

                        * CODES DU JEU ' PIRATES ' *

Le mode d'emploi est très très simple....Vous cherchez suivant l'année la
date d'arrivée dans telle ou telle ville du train ou de la flotte ( suivant
ce qui est demandé, of course....).
Le seul truc à savoir, c'est que ' déb. ' correspond au début du mois
( early in the month ) et que ' fin. ' correspond à...la fin du mois bien
sur ( late in the month )......Bon jeu !



                   LA FLOTTE AU TRESOR - THE TREASURE FLEET
_______________________________________________________________________________
!     VILLES      !JAN !FEV !MAR !AVR !MAI !JUI !JUL !AOU !SEP !OCT !NOV !DEC !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1560            !    !    !    !    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !    !    !    !    !    !    !    !déb.!    !    !
! Puerto Cabello  !    !    !    !    !    !    !    !    !    !fin.!    !    !
! Maracaibo       !    !    !    !    !    !    !    !    !    !    !déb.!    !
! Rio de la Hacha !    !    !    !    !    !    !    !    !    !    !fin.!    !
! Nombre de Dios  !    !    !    !    !    !    !    !    !    !    !    !déb.!
! Cartagena       !    !    !    !    !    !    !    !    !    !    !    !fin.!
! Campeche        !fin.!    !    !    !    !    !    !    !    !    !    !    !
! Vera Cruz       !    !déb.!    !    !    !    !    !    !    !    !    !    !
! La Havane       !    !    !déb.!    !    !    !    !    !    !    !    !    !
! Santiago        !    !    !fin.!    !    !    !    !    !    !    !    !    !
! Canal de Floride!    !    !    !fin.!    !    !    !    !    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1600            !    !    !    !    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !    !    !    !    !    !    !    !déb.!    !    !
! Caracas         !    !    !    !    !    !    !    !    !    !fin.!    !    !
! Maracaibo       !    !    !    !    !    !    !    !    !    !    !déb.!    !
! Rio de la Hacha !    !    !    !    !    !    !    !    !    !    !fin.!    !
! Santa Marta     !    !    !    !    !    !    !    !    !    !    !    !déb.!
! Puerto Bello    !    !    !    !    !    !    !    !    !    !    !    !fin.!
! Cartagena       !déb.!    !    !    !    !    !    !    !    !    !    !    !
! Campeche        !    !déb.!    !    !    !    !    !    !    !    !    !    !
! Vera Cruz       !    !fin.!    !    !    !    !    !    !    !    !    !    !
! La Havane       !    !    !fin.!    !    !    !    !    !    !    !    !    !
! Canal de Floride!    !    !    !fin.!    !    !    !    !    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1620            !    !    !    !    !    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !    !    !    !    !    !déb.!    !    !    !
! Maracaibo       !    !    !    !    !    !    !    !    !fin.!    !    !    !
! Rio de la Hacha !    !    !    !    !    !    !    !    !    !déb.!    !    !
! Santa Marta     !    !    !    !    !    !    !    !    !    !fin.!    !    !
! Puerto Bello    !    !    !    !    !    !    !    !    !    !    !déb.!    !
! Cartagena       !    !    !    !    !    !    !    !    !    !    !    !déb.!
! Campeche        !déb.!    !    !    !    !    !    !    !    !    !    !    !
! Vera Cruz       !fin.!    !    !    !    !    !    !    !    !    !    !    !
! La Havane       !    !fin.!    !    !    !    !    !    !    !    !    !    !
! Canal de Floride!    !    !fin.!    !    !    !    !    !    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1640            !    !    !    !    !    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !    !    !    !    !    !    !déb.!    !    !
! Maracaibo       !    !    !    !    !    !    !    !    !    !fin.!    !    !
! Rio de la Hacha !    !    !    !    !    !    !    !    !    !    !déb.!    !
! Santa Marta     !    !    !    !    !    !    !    !    !    !    !fin.!    !
! Puerto Bello    !    !    !    !    !    !    !    !    !    !    !    !déb.!
! Cartagena       !déb.!    !    !    !    !    !    !    !    !    !    !    !
! Campeche        !    !déb.!    !    !    !    !    !    !    !    !    !    !
! Vera Cruz       !    !fin.!    !    !    !    !    !    !    !    !    !    !
! La Havane       !    !    !fin.!    !    !    !    !    !    !    !    !    !
! Canal de Floride!    !    !    !fin.!    !    !    !    !    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1660            !    !    !    !    !    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !    !    !    !    !    !déb.!    !    !    !
! Maracaibo       !    !    !    !    !    !    !    !    !fin.!    !    !    !
! Rio de la Hacha !    !    !    !    !    !    !    !    !    !déb.!    !    !
! Santa Marta     !    !    !    !    !    !    !    !    !    !fin.!    !    !
! Puerto Bello    !    !    !    !    !    !    !    !    !    !    !déb.!    !
! Cartagena       !    !    !    !    !    !    !    !    !    !    !    !déb.!
! Campeche        !déb.!    !    !    !    !    !    !    !    !    !    !    !
! Vera Cruz       !fin.!    !    !    !    !    !    !    !    !    !    !    !
! La Havane       !    !fin.!    !    !    !    !    !    !    !    !    !    !
! Canal de Floride!    !    !fin.!    !    !    !    !    !    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1680            !    !    !    !    !    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !    !    !    !    !    !    !déb.!    !    !
! Rio de la Hacha !    !    !    !    !    !    !    !    !    !fin.!    !    !
! Santa Marta     !    !    !    !    !    !    !    !    !    !    !déb.!    !
! Puerto Bello    !    !    !    !    !    !    !    !    !    !    !fin.!    !
! Cartagena       !    !    !    !    !    !    !    !    !    !    !    !fin.!
! Campeche        !fin.!    !    !    !    !    !    !    !    !    !    !    !
! Vera Cruz       !    !déb.!    !    !    !    !    !    !    !    !    !    !
! La Havane       !    !    !déb.!    !    !    !    !    !    !    !    !    !
! Canal de Floride!    !    !    !fin.!    !    !    !    !    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!




                      LE TRAIN ARGENTE - THE SILVER TRAIN
_______________________________________________________________________________
!     VILLES      !JAN !FEV !MAR !AVR !MAI !JUI !JUL !AOU !SEP !OCT !NOV !DEC !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1560            !    !    !    !    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !    !déb.!    !    !    !    !    !    !    !    !
! Borburata       !    !    !    !fin.!    !    !    !    !    !    !    !    !
! Puerto Cabello  !    !    !    !    !déb.!    !    !    !    !    !    !    !
! Coro            !    !    !    !    !fin.!    !    !    !    !    !    !    !
! Gibraltar       !    !    !    !    !    !déb.!    !    !    !    !    !    !
! Maracaibo       !    !    !    !    !    !fin.!    !    !    !    !    !    !
! Rio de la Hacha !    !    !    !    !    !    !déb.!    !    !    !    !    !
! Santa Marta     !    !    !    !    !    !    !fin.!    !    !    !    !    !
! Cartagena       !    !    !    !    !    !    !    !déb.!    !    !    !    !
! Panama          !    !    !    !    !    !    !    !fin.!    !    !    !    !
! Nombre des Dios !    !    !    !    !    !    !    !    !    !déb.!    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1600            !    !    !    !    !    !    !    !    !    !    !    !    !
! St Thome        !    !    !    !déb.!    !    !    !    !    !    !    !    !
! Cumana          !    !    !    !fin.!    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !    !déb.!    !    !    !    !    !    !    !
! Puerto Cabello  !    !    !    !    !fin.!    !    !    !    !    !    !    !
! Coro            !    !    !    !    !    !déb.!    !    !    !    !    !    !
! Gibraltar       !    !    !    !    !    !fin.!    !    !    !    !    !    !
! Maracaibo       !    !    !    !    !    !    !déb.!    !    !    !    !    !
! Rio de la Hacha !    !    !    !    !    !    !fin.!    !    !    !    !    !
! Santa Marta     !    !    !    !    !    !    !    !déb.!    !    !    !    !
! Cartagena       !    !    !    !    !    !    !    !fin.!    !    !    !    !
! Panama          !    !    !    !    !    !    !    !    !déb.!    !    !    !
! Puerto Bello    !    !    !    !    !    !    !    !    !    !fin.!    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1620            !    !    !    !    !    !    !    !    !    !    !    !    !
! St Thome        !    !    !déb.!    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !fin.!    !    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !déb.!    !    !    !    !    !    !    !    !
! Puerto Cabello  !    !    !    !fin.!    !    !    !    !    !    !    !    !
! Gibraltar       !    !    !    !    !déb.!    !    !    !    !    !    !    !
! Maracaibo       !    !    !    !    !fin.!    !    !    !    !    !    !    !
! Rio de la Hacha !    !    !    !    !    !déb.!    !    !    !    !    !    !
! Santa Marta     !    !    !    !    !    !fin.!    !    !    !    !    !    !
! Cartagena       !    !    !    !    !    !    !déb.!    !    !    !    !    !
! Panama          !    !    !    !    !    !    !fin.!    !    !    !    !    !
! Puerto Bello    !    !    !    !    !    !    !    !    !déb.!    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1640            !    !    !    !    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !    !déb.!    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !fin.!    !    !    !    !    !    !    !    !
! Gibraltar       !    !    !    !    !déb.!    !    !    !    !    !    !    !
! Maracaibo       !    !    !    !    !fin.!    !    !    !    !    !    !    !
! Rio de la Hacha !    !    !    !    !    !déb.!    !    !    !    !    !    !
! Santa Marta     !    !    !    !    !    !    !déb.!    !    !    !    !    !
! Cartagena       !    !    !    !    !    !    !fin.!    !    !    !    !    !
! Panama          !    !    !    !    !    !    !    !fin.!    !    !    !    !
! Puerto Bello    !    !    !    !    !    !    !    !    !    !déb.!    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1660            !    !    !    !    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !déb.!    !    !    !    !    !    !    !    !    !
! Caracas         !    !    !fin.!    !    !    !    !    !    !    !    !    !
! Gibraltar       !    !    !    !déb.!    !    !    !    !    !    !    !    !
! Maracaibo       !    !    !    !fin.!    !    !    !    !    !    !    !    !
! Rio de la Hacha !    !    !    !    !déb.!    !    !    !    !    !    !    !
! Santa Marta     !    !    !    !    !    !déb.!    !    !    !    !    !    !
! Cartagena       !    !    !    !    !    !fin.!    !    !    !    !    !    !
! Panama          !    !    !    !    !    !    !fin.!    !    !    !    !    !
! Puerto Bello    !    !    !    !    !    !    !    !    !déb.!    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!
! 1680            !    !    !    !    !    !    !    !    !    !    !    !    !
! Cumana          !    !    !    !déb.!    !    !    !    !    !    !    !    !
! Caracas         !    !    !    !fin.!    !    !    !    !    !    !    !    !
! Maracaibo       !    !    !    !    !fin.!    !    !    !    !    !    !    !
! Rio de la Hacha !    !    !    !    !    !fin.!    !    !    !    !    !    !
! Santa Marta     !    !    !    !    !    !    !déb.!    !    !    !    !    !
! Cartagena       !    !    !    !    !    !    !fin.!    !    !    !    !    !
! Panama          !    !    !    !    !    !    !    !fin.!    !    !    !    !
!_________________!____!____!____!____!____!____!____!____!____!____!____!____!




                        ____________________________

Ainsi parlait Barbe-Noire :' Et yo, et yo, et une bouteille de Rhum !!! '....
Ainsi parlait Deny :' Et yo, et yo, et une bouteille de Roms !!! '....
( Je sais, c'est nul, mais que voulez-vous, il faut bien vivre...)

--------------------------- 06/03/1988 by Deny & The Gog's from Highlanders ---


Retour sommaire

hr DEPME

Face 1 : PLOMBAGE OLIVER 1.


-------------------------------------------------------------------------------
 Petite réflexion sur la manière de cacher un JMP.        par Oliver Twist...
-------------------------------------------------------------------------------

                                           Paris le 08/04/88
                                           -----------------


    Messieurs, mesdames, mon père, ma mère, mes frères, ma prof de math, mon
épicier du coin de la rue, ma chatte (et on ne s'excite pas comme ça !!!),
mon Arlette Laguiller (tiens, je vais voter pour elle), mon Jean-Marie le Pen
(et puis non, pour Jean-Marie), mon Georges Marchais (et pourquoi pas pour ce
cher Georges ???), mon Raymond Barre (et merde j'ai pas encore 18 ans, et ben
tant pis, on attendra 1995...), ma nana de l'affiche du 36 15 COVER qui est
dans ma piaule et qui mesure 1m20 de large et 2m de haut (ça me fait une nana à
poil grandeur nature...), ma catherine (Grosses Bises...(Celle là c'en est une
qu'elle est bonne !!!)), mon Godfather, sa Germaine, mon Jacques Dutronc et son
joujou extra qui fait crac boum hue, mon Steve Wosniak, mon Serge Gainsbourg,
sa charlotte, mes amis et mes ennemis, je vous dis salut, bonjour, bonsoir,
bonne nuit et bonne bourre...



    Et now, I am going to raconter à you a jouli story...



    Alors voila, c'est l'histoire d'un mec, il est beau, il est jeune, il est
riche, il doit donner des coups de pieds dans les femmes qui se jettent à ses
pieds, et meme que il est doté d'une intelligence surhumaine, digne de celle de
Superman lors du combat contre l'huitre géante de l'espace qui, surgissait de
la planette JAIDUPOILOPATES...
Vous vous rappelez tous la fin de cette histoire puisqu'il la détruisit grace à
ses supers rayons protonisants à charges multiples d'électrons dénucléisants,
ce qui n'est pas con !...


    Je sens chez certains d'entre vous le désir de savoir qui est cet etre si
extraordinaire; et bien, en toute modestie, ça n'est autre que le rédacteur de
ce fichier c'est à dire moi meme personnellement tout seul: Oliver Twist.


    Il y a quelques mois de cela, voyant que mon Q.I. était très nettement au
dessus de la moyenne des cerveaux de la planette, je me suis dit qu'il falait
en user intelligemment... J'avais alors plusieurs solutions:

  - Faire cuire un oeuf à la coque.
  - Me lancer dans le LOGO.
  - Lire l'Humanité ou National Hebdo.
  - M'acheter un ZX 81 en kit.
  - Ou pire, un ST.
  - Sauter par la fenetre.
  - Prendre des cours d'éco ou d'espagnol.
  - Lire OUI-OUI en vacances.
  - M'acheter LUI avec Danielle Gilbert.
  - M'acheter PLAYBOY avec pierrette Le Pen.
  - M'inscrire au club Apple.
  - Devenir con.
  - Ne plus jamais regarder les nuls de 19h20 a 20h30 tous les soirs sauf le
    samedi et le dimanche sur C+ en clair et ss décodeur avec Alain Chabat,
    Bruno Carette et Chantal Lauby.
  - Manger un couscous ou une paella Garbit qu'est bon comme là-bas dis.
  - Réaliser un super vachement genial super extra très fort défi.



    Mais helas...

  - pour l'oeuf, meme ma super intelligence n'est pas venue à bout de ce
    problemme...(faut pas déconner, merde, c'est pas si facile.)
  - pour le LOGO, j'ai ce qu'il me faut au lycée !!! (coucou Jean-Philippe).
  - pour l'Huma et pour National Hebdo, j'ose pas.
  - pour le ZX 81, je ne sait pas si je pourais déplomber les K7s.
  - pour le ST, Godfather menace de m'égorger et pire encore.
  - pour la fenetre, je ne sais pas quel étage choisir.
  - pour les cours d'eco et d'espagnol, c'est sans commentaire.
  - pour OUI-OUI, je n'aime pas les oeuvres trop compliquées.
  - pour LUI, je trouve ça scandaleux qu'une star comme Danielle Gilbert,
    connue aux 4 coins du monde, ose poser dans une telle revue, elle serait
    aller chez HARA-KIRI, elle aurait gagné 10 fois plus !!!
  - de meme pour cette chère Pierrette...
  - ne nous attardons pas sur le club Apple s.v.p
  - quand à devenir con, alors là, c'est pas possible,on est pas la SNCF merde.
  - pour les nuls, impossible d'en rater une minute: danger !!!.
  - et mon épicier n'a meme plus de couscous Garbit. Non mais ou vat-on ???
  - donc, plus qu'une solution: Le Défi...


   Ce beau defi est déjà réalisé: il est beau mais un peu trop simple au niveau
du plombage. Par contre, il est bourré de petits piéges pour bien faire chier
tout le monde !!! Pour l'instant ce defi n'a été donné à personne et
normalement il ne le sera jamais, mais si certains d'entre vous le veullent
pour découvrir tous les gros cacas que j'ai mis dedans, ils peuvent toujours me
le demander au 36 14, 135060318*RTEL (n'oubliez surtout pas ce nouveau code.)
bal Oliver Twist (je vous assure qu'il y a des trucs sympas dedans...(au fait
j'ai pas de minitel alors y faut que j'aille squater chez un pote ou au boulot
de mon papa à moi pour lire les messages alors soyez très patients pour la
réponse...))

   Bref, j'avais besoin pour le réaliser, de bien planquer mes JMP, et je
n'avais pas beaucoup d'idées... Laissons tomber le bon coup bien drole des
PHA et des RTS ou RTI, ça ne fait plus rire personne depuis bien longtemps.

   C'est alors qu'une nuit, vers les 1h du matin, me vint une idée super géante
et pas dégueu. Immaginez avec votre immagination qu'à l'interieur d'un
programme apparaisse ceci:


        LDA #$80
        STA $09
        RTS


   C'est très banal, ça va foutre #$80 en $09, et puis ça fait un beau RTS, je
ne vois vraiment rien de géant là dedans !!!

   Et bien si, c'est géant car si vous faites marcher ce programme avec une
petite bidouille en mémoire avant, vous vous retrouvez à l'adresse que vous
voulez !!! Et je precise: SANS TOUCHER A LA PILE.
          ========================================


   Ca vous fait baver, je le sens. (d'ailleur ça à fait baver GODFATHER...)
En fait, c'est vraiment tout béte mais c'est tellement béte que le déplombeur,
meme s'il vient de l'espace intergalactique, est capable de passer à coté et de
finir sa vie en testant la pile à la con...


   Y fallait que je mette une connerie ici parce que sinon la phrase d'aprés
arrivait un peu vite, par manque de transition dirait cette chose ignoble qui
me sert de prof de français. (Ca fait un bout de temps que j'avais envie de le
crier et j'en ai enfin l'occasion: MA PROF DE FRANCAIS N'EST QU'UNE CHIENNE!!!)
                                  ---------------------------------------------


   Un soir, aprés avoir déliré comme un fou avec ces chèrs ACACZEN,TECRODEZEN,
ENFONCEMOIBIENFORT et VAZIQUEJTERTOURNE (qui voulaient avoir leurs noms dans
DEP.ME, et je les comprends trés bien...), l'envie me prit d'aller faire un
petit tour dans mes chiottes puis en $FDED... Les chiottes je comprends mais
pourquoi en $FDED, alors là, je n'en sais absolument rien !!!


   Et bien sachez mes frères,qu'en $FDED, il y a ceci:

        JMP ($0036)

   -Et en $0036, m'sieu, y'a quoi ???
   -Trés bonne question mon brave et voici la réponse:

0036- F0 FD (si vous n'avez pas ça, essayez sans DOS car certains modifient ce
pointeur (en fait je dis 'certains' mais c'est peut etre tous, en tout cas, ça
me fait chier de regarder alors si ça vous interresse, regarder vous meme!!!))

  Ce qui signifie que lorsqu'on fait un JSR $FDED, ce cher Apple va faire un
tour en $FDF0.

  Peut etre que certains d'entre vous commencent à voir ou je veux en venir.

  Je m'explique pour les cerf-volants (mon humour est réélement irrresistible).


  Que ce passe-t-il lorsque l'on fait marcher ce programme:

        LDA #$80
        STA $09
        RTS

    On va mettre #$80 en $09 puis on revient au basic ou à l'assembleur donc on
affiche ']' ou '*' donc on fait un JSR $FDED donc y'en a de plus en plus qui
se douttent de ce que je veux faire donc on est tous des betes. (enfin surtout
moi.)

    Il suffit donc de changer les octets qui sont en $36-$37 pour detourner
le JMP vers un jouli programme que l'on planque bien et qui est celui-ci:

        ORG $8000       ;PLANQUEZ LE MIEUX QUAND MEME, DANS LE DOS P.EX


        PHA             ;ON EMPILE A
        LDA $09         ;C'EST COMME ON VEUT POUR L'ADRESSE...
        CMP #$80        ;SI ON VEUT TOUJOURS POUR LA VALEUR...
        BEQ AGAGA       ;SI ON TROUVE LA VALEUR, ON VA FAIRE UN TOUR CHEZ AGAGA
        PLA             ;ON DEPILE POUR L'AFFICHER
        BIT $067B       ;CECI EST CE QU'ON TROUVE EN $FDF0
        JMP $FBB4       ;CECI EST LA SUITE DE CE QU'ON TROUVE EN $FDF0
AGAGA   JMP $2000       ;ET LA VOUS METTEZ L'ADRESSE QUE VOUS VOULEZ...

   Voila, alors vous changez les deux octets en $36 (ici vous faites: 36:00 80)
et si, en mode direct, vous faites 9:80, vous vous retrouvez en $2000, bandant,
non ???

   De plus cette methode de dissimulation de JMP posède un avantage que l'on
pourrait qualifier de super extra bandant et qui est le suivant:
 Si vous utilisez cette technique, c'est dans l'intention de rendre le boot
tracing difficile et qui dit boute trassingue dit 4C 59 FF c'est à dire
JMP $FF59: le deplombeur va mettre des 4C FF 59 un peu partout dans votre
programme pour l'interrompre.
   Ahhh... mais j'y pense, lorsque l'on fait un JMP $FF59, certaines adresses
en page zero sont détruites. Et oui, pas de chance, pour le pirate, lors d'un
saut en $FF59, les adresses $36 et $37 sont detruites et remises à neuf ce qui
signifie que le déplombeux a interet à avoir vu la ruse que vous avez
habilement créé pour mettre vos deux valeurs en $36 et $37 because que sinon,
les chances sont grandes pour qu'il ouvre sa fenetre puis...

   Vous avez aussi tout interet à choisir pour l'adresse de test (ici $09) une
adresse qui soit detruite lors d'un JMP $FF59 (p.ex les limites de l'ecran
comme: $20, $21, $22, $23...)

   ATTENTION n°1 !!! en $2000 il faut remettre une autre valeur en $09 pour
éviter les emmerdes car si le moniteur rencontre un BRK ou un RTS, ou vat-il se
prommener ??? en $FDED bien sur ce qui entrainne un saut en $8000 puis en
$2000... Donc, juste après avoir effectuer votre saut, mettez discretement une
autre valeur en $09


   ATTENTION n°2 !!! si vous modifiez le pointeur avant d'avoir instaler le
petit programme précedent (que je vous autorise à modifier à votre guise), vous
risquez d'avoir de grosse surprises. (ce problème n'existe qu'en mode direct
puisqu'il y a retour a l'assembleur après la modif...(cette phrase est
absolument incompréhensible mais c'est qu'il est tard et qu'à partir d'une
certaine heure, il faut plus m'en demander trop...))


   ATTENTION n°3 !!! il faut absolument que le RTS qui suit le fait de mettre
votre valeur dans votre adresse ne soit pas le RTS d'un sous programme (appelé
par un JSR) mais il faut absolument qu'il y ait un saut en $FDED.


   Voila, je vais laisser relire ce fichier extra-bandant aux ceuces qui n'ont
pas tout saisit, quand aux dieux de la bidouille, à vos claviers, vous allez
bien me chier un truc encore mieux, et moi, j'ai une petite idée qui vient de
s'allumer dans ma tete alors à bientot dans DEP.ME 10...


                Tous avec moi pour le retour de Danielle Gilbert a la télé...
                                           (En porte-jarretelles bien sur...)


-------------------------------------------------------------------------------
Réveillez vous au fond, c'est fini...  Oliver Twist from the new apple mafia...
-------------------------------------------------------------------------------


Retour sommaire

hr DEPME

Face 1 : PLOMBAGE OLIVER 2.


===============================================================================
=                 Encore une protection, (un peu plus nulle...)               =
=              par Oliver Twist. (toujours aussi beau...si,si !!!)            =
===============================================================================




               Urgh à tous...
              ----------------


        Bon, on va tout de suite annoncer la protection débile, mais qui peut
etre sadique si l'on s'y prend bien et c'est pour cela que vous n'aurez qu'une
idée émise par votre serviteur et non la façon de réaliser la derniére.(trop
méchante pour ce que l'on veut proteger.)

        Commençons par la protection débile: (Ah, j'ai oublié de vous dire que
cette methode ne marche que sous DOS 3.3 et que c'est bien fait pour les fous
duproDOS.) Je voudrais aussi faire un gros bisou sur la joue qui pique de
'The Satanic', l'homme viril qui m'a mis sur la voie de cette merde de
protection à la con... Allez, on arrete les remerciemments et les familiarités
pour arreter de vous faire baver. (encore en train de baver ??? mais vous ne
faites que ça ???)


        Immaginons que nous ne voulons pas qu'un vilain méchant pas beau vienne
voir comment vous avez fait votre programme basic, (que les fous d'assembleur
comme moi ne partent pas (surtout pas moi car vous serriez dans la merde pour
lire ce fichier pas trés bandant...) car y'en a un petit peu et que ça peut
toujours vous servir un jour ou l'autre.) dans ce cas, vous faites les pokes
classiques:


          POKE 2049,0 ET POKE 2050,0


        Oua l'autre, c'est nul ton truc, d'abord ça marche pas si ton programme
n'est pas en $801: il faut changer les pokes et en plus ça ne marche que si le
programme a été lancé, alors il suffit de faire un load et puis tu peux lister
ta merde. Tralala, Oliver Twist est nul, je suis meilleur que lui, pouet pouet.

        Attends un peu banane, je t'ai dit que c'était classique ce qui
entraine que c'est nul... Bien, reprenons... Ah, au fait, pendant que j'y pense
si vous n'arrivez pas à finir Marble Madness à cause du manque de temps, allez
mettre EA EA en piste $A, secteur $F et byte $1F (ou il y avait F0 08) mais ça
n'a absolument rien à voir avec la protection nulle. (j'ai quand meme envie de
vous dire que j'ai fait marcher mes cellules grises pour trouver ce fix dans
l'intention de finir le jeu et que je n'y arrive toujours pas... Enfin, moi et
les jeux...) C'est marrant, moi y'en à plus trop savoir ou moi y'en a étre. On
va sauter quelques lignes histoire d'y voir plus clair...



        Immmmaginons que nous ayons écrit grace à notre perspicacité, notre
intelligence et notre bravoure, le programme hyper puissant qui est le suivant:


  10 REM MDFP
  20 PRINT " VIVE LE FRANCAIS "
  30 END

        J'ai jamais vu un programme aussi beau... (sauf pour la phrase qu'il
écrit...) si on fait un CALL-151 et que l'on fait 801L, on doit trouver à peu
près ça:

 801- 0C 08             Pointeur de la ligne suivante.
 803- 0A 00             Numéro de la ligne.
 805- B2                REM.
 806- 20 4D 44 46 50    ' MDFP'.
 80B- 00                Fin de ligne.
 80C- 26 08             Pointeur de la ligne suivante.
 80E- 14 00             Numéro de la ligne.
 810- BA                Token de PRINT.
 811- 22 20 56 49 56
      45 20 4C 45 20    '" VIVE LE FRANCAIS "
      46 52 41 4E 43
      41 49 53 20 22
 825- 00                Fin de ligne.
 826- 2C 08             Pointeur de la ligne suivante.
 828- 1E 00             Numéro de la ligne.
 82A- 80                Token de END.
 82B- 00                Fin de ligne.
 82C- 00 00             Fin de programme.



        Que de place prise en mémoire pour écrire trois pauvres mots... Enfin,
peut étre avez vous été intrigués par les 4 lettres qui suivaient le REM, que
peuvent bien signifier MDFP ??? En fait, si on a mis ça, c'est pour réserver de
la place en mémoire... et chaque lettre va avoir son importance. (surtout les 2
premières...)
 

   'M'  va étre remplacé par 0D qui est comme tout le monde le sait, la
représentation ASCII du caractère C-M qui n'est autre qu'un magnnnifique RETURN
   'D'  va étre remplacé par 04 soit C-D.
   'F' et 'P' ne seront pas changés pour que la commande FP soit executée.

        La seule chose complexe à faire est donc de remplacer 4D 44 (en 807.)
par 0D 04.

        Maintenant, vous pouvez faire autant de run que vous voulez (chose
impossible avec les pokes classiques et nuls !!!) mais si vous avez le malheur
de faire LIST, vous détruisez votre programme... Pourquoi ? Parceque !

        Non, je vais expliquer... lorsque vous faites LIST, pour afficher tout
ça, le programme sort les caractères un par un; lorsque il rencontre 0D, il
envoie un retour chariot, on devient donc indépendant de la liste... Il envoie
alors un 04 soit Control D qui annonce que la prochaine commande appelle le
DOS et enfin FP est la commande qui met le basic Applesoft en route et qui en
profite pour effacer le programme.

        Bon, d'accord c'est pas mal comme protection mais le programme est
facilement listable si on est un petit peu pas trop con: FP fait exactement la
meme chose que les deux pokes du debut, c'est à dire qu'il met le premier
pointeur de ligne suivante à zéro donc la liste ne peut etre obtenue... Il
suffit donc de reperer le premier 00 (fin de la première ligne) et de mettre
sonadresse plus 1 en 801-802. Bien sur, si on refait LIST, le programme
disparait
à nouveau et le petit curieux va vite trouver où est le piège puisqu'il agit
dèsle début... On peut déjà faire ça en plus:

 10 REMGGGMDFD
      ^^
      surtout pas d'espace ici !!!

        On va ensuite remplacer les caractères GGG par le caractère flèche
gauche (qui y'en a étre 08.) comme ça, on ne verra pas apparaitre le rem et ça
vous pourrez etre sur que le plus grand des pirates n'en aura rien à battre...
conclusion, ça ne sert pratiquement à rien !!!

        Enfin, sachez que vous pouvez remplacer FP par n'importe quelle
commandeDOS... BRUN, BLOAD, ou pourquoi pas INIT... Bon alors là on arrive dans
la
protection méchante... Et le problème qui se pose est le suivant: si le mec
n'est pas trop con, il se rend compte que c'est pas très normal que le drive se
mette en route et se recalibre quand on tape LIST... Et si il est encore moins
con, il retire vite sa disquette du drive avec quand meme une bonne partie de
la1ère piste baisée... et dans ce cas, il va se démerder pour copier un autre
DOS
et avec un peu de chance, ça marche... Il faut donc avoir un DOS un peu
bidouillé sur la disquette et qui soit le seul faire fonctionner ce qu'il y a
dessut... là, démerdez vous...

        En immmmaginant que vous ne soyez pas méchant, mais puriste, il y a
d'autre maniere de faire comprendre que l'on veut garder secret son
programme...Des facons gentilles, par exemple, vous lancez un super programme
qui met des
phrases gentilles, ou mieux, vous rajoutez, ou modifiez une commade DOS mais
cela implique que votre dos soit present... (Tiens, on a déjà parlé de DOS
spéciaux un peu plus haut... Encore une fois, démerdez vous !!!)


        Dernier petit conseil, mettez plusieurs pieges dans votre merde car
c'est très facilement reperable... et augmentez à chaque fois la méchancetè de
ceux-ci (au tout debut un FP et à la fin un INIT...)


        Bon, il est tard (5h1/4) alors je vais vous laisser à vos rèves doux et
chaleureux... Et je vous dis à très bientot en vous faissant de grosses bises
tout partout, moi, je vais aller gouter !!! (pensez, une tartine de confiture
defraises, qui m'attend depuis 1/4 d'heure...)




                                Salut et URGH !!!


                                        Oliver Twist. ist. e defraises, qui
m'attend depuis 1/4 d'heure...)




                                Salut et URGH !!!


                                        Oliver Twist.


Retour sommaire

hr DEPME

Face 1 : PROGRAMMATION SOURIS.


===============================================================================
RUB' PROGRAMMATION : LA SOURIS                                (p) CAPTAIN CRACK
===============================================================================

LE JOUR OU JE ME SUIS POURVU POUR MON APPLEUX CHERI D'UNE SOURIS, VOUS SAVEZ CE
BIZARRE MACHIN MUNI D'UN APPENDICE CAUDAL...,JE NE ME DOUTAIS PAS DES TRACAS
QU'ELLE ME CAUSERAIT...POUR VOUS EVITER DES NUITS BLANCHES,VOILA TOUT CE QUE
VOUS AVEZ TOUJOURS VOULU SAVOIR SUR 'ZE MOUSE':

QUAND JE PARLE DE PROGRAMMER LA SOURIS, IL FAUT DEJA SAVOIR OU ELLE SE TROUVE,
A SAVOIR DANS UN DES 7 SLOTS DE  VOTRE Z'APPLE IIE (POUR LE //c C'EST + FACILE)

UNE FOIS MISE EN PLACE DANS LE SLOT 1 A 7, QUI SE RETROUVE EN MEMOIRE DE $C100
A $C700, LA SOURIS SE CARACTERISE PAR:

  Cn0C : 20    ET   CnFB : D6        AVEC n LE NUMERO DU SLOT EN QUESTION

POUR TROUVER LE SLOT,UN PROGRAMME SIMPLE SUFFIT:

]CALL-151

*300L

*300 LDA #$00          ! ON COMMENCE
     STA $05           ! LE CHECK
     LDA #$C0          ! EN $C000
     STA $06
LOOP LDY #$0C          ! ON A BIEN DIT Cn0C NON ?
     LDA ($05),Y
     CMP #$20          ! ON VERIFIE QU'IL Y A #$20
     BNE TEST
     LDY #$FB          ! PUIS CnFB
     LDA ($05),Y
     CMP #$D6          ! IL EST LA LE #$D6 ? 
     BNE TEST          ! NON, ON FAIT LES AUTRES SLOTS
     LDA $06
     SEC
     SBC #$C0
     STA $0A           ! ET VOILA !
     RTS
TEST INC $06
     LDA $06
     CMP #$C8          ! EH..ON A QUE 7 SLOTS, FAUT PAS DEPASSER !
     BNE LOOP0
     LDA #$FF
     STA $0A           ! SI PEEK(10)=255 , Y'A PAS DE SOURIS !
     RTS

ALORS SOUS BASIC, UN CALL 768 SUIVI D'UN PRINT PEEK (10) SUFFIRA POUR SAVOIR LE
NUMERO DU CONNECTEUR.

MAINTENANT POUR GERER LES POSSIBILITES DE VOTRE ANIMAL, VOUS AVEZ LE CHOIX
ENTRE 8 ROUTINES...

NOUS ALLONS LES ETUDIER EN DETAIL:

1> COMMENT LES TROUVER
   ===================

EN EFFET, LES ADRESSES DES 8 ROUTINES SONT PLACEES DANS UNE TABLE EN MEMOIRE EN
L'OCCURENCE :
 
 $Cn12 : OCTET BAS DE 'SETMOUSE'        !    $Cn16 : OCTET BAS DE 'POSMOUSE'
 $Cn13 : OCTET BAS DE 'SERVEMOUSE'      !    $Cn17 : OCTET BAS DE 'CLAMPMOUSE'
 $Cn14 : OCTET BAS DE 'READMOUSE'       !    $Cn18 : OCTET BAS DE 'HOMEMOUSE'
 $Cn15 : OCTET BAS DE 'CLEARMOUSE'      !    $Cn19 : OCTET BAS DE 'INITMOUSE'

         OU 'n' REPRESENTE TOUJOURS LE NO DU SLOT (TROUVE AUPARAVANT).

2) COMMENT LES APPELER
   ===================

ON PEUT CONSTRUIRE UNE TABLE AVEC CES ADRESSES AUXQUELLES ON POURRA 'JMP'_ER
VIA UN JMP (INDIRECT). IL FAUT SAVOIR QU'AVANT TOUT APPEL A UNE DE CES
ROUTINES, LE REGISTRE 'X' DOIT CONTENIR '$Cn' ET LE REGISTRE Y '$n0'.

VITE, UN EXEMPLE, CAR JE SENS QUE C'EST PAS CLAIR !: ..... (mais si!, mais si)
&NTD&.

      LDA #$00     !
      LDY $0A      ! CETTE ROUTINE MULTIPLIE LE SLOT PAR #$10 (POUR AVOIR $n0)
^ 1   CLC  
      ADC #$10
      DEY
      BPL <1
      STA n0       ! ET MET LE RESULTAT EN $n0...CA SERVIRA PLUS TARD !

      LDA #$00
      STA $09
      LDA $0A              ! LE NUMERO DU SLOT, RAPPELEZ VOUS !
      STA SLOT
      CLC
      ADC #$C0
      STA Cn               ! CA RESSERT POUR LES APPELS
      LDX #$00
      LDY #$12             ! A PARTIR DE $Cn12
LOOP  LDA ($09), Y
      STA TABLE, X           TABLE:
      INY                    SETMOUSE       HEX 00
                             SERVEMOUSE     HEX 00
      INX                    .              .
      CPY #$1A               .              .
      BNE LOOP               INITMOUSE      HEX 00
      RTS

PUIS POUR UN APPEL A UNE ROUTINE EN PARTICULIER:

LDY SETMOUSE OU INITMOUSE, HOMEMOUSE, CLAMPMOUSE, READMOUSE, CLEARMOUSE...

JSR CALL

CALL  STY CARD+1
      LDA Cn
      STA CARD+2
      LDX Cn
      LDY n0
      JSR CARD
      RTS
CARD  4C 00 00

3) QU'EST-CE QU'ON EN FAIT ?
   =======================

BON..AVEC CES TROIS PETITS PROGRAMMES, VOUS SAVEZ MAINTENANT COMMENT TROUVER LE
SLOT DE LA SOURIS, COMMENT CONSTRUIRE UNE TABLE AVEC LES ADRESSES DES
DIFFERENTES SUB-ROUTINES, ET ENFIN COMMENT LES APPELER...MAIS CA NOUS DIS
TOUJOURS PAS A QUOI CA SERT...

A> SETMOUSE : ADRESSE BASSE EN $Cn12

SERT A INITIALISER LE MODE SOURIS...ET CECI SE FAIT SELON LA VALEUR CONTENUE
DANS L'ACCUMULATEUR AVANT L'APPEL, QUI POUR LE 'PASSIF' EST #$01. TOUTE AUTRE
VALEUR ENTRE #$02 ET #$0F MET EN FONCTION LES MODES INTERRUPTIBLES...
CE QUI NOUS AMENERAIT TROP LOIN, LE MODE PASSIF ETANT LE PLUS USITE.

DONC POUR L'APPELER:   LDA #$01
                       LDY SETMOUSE
                       JSR CALL

B> SERVEMOUSE : ADRESSE BASSE EN $Cn13

SERT UNIQUEMENT EN CAS D'UTILISATION DES MODES INTERRUPTIBLES, DONC PAS POUR
NOUS POUR L'INSTANT !

C> READMOUSE : ADRESSE BAS... et puis continuez a calculer, moi j'en ai MARRE

CA, C'EST LA ROUTINE DE LECTURE DES DONNEES EN PROVENANCE DE LA SOURIS...EN
L'OCCURENCE SA POSITION SUR L'ECRAN  ET L'ETAT DU BOUTON..ON Y REVIENDRA !

D> CLEARMOUSE :

MET A 0 LES POSITIONS DE LA SOURIS...LORS DU 1ER APPEL PAR EXEMPLE

E> POSMOUSE :

MET A JOUR LA POSITION DE LA SOURIS SELON LA PLACE QU'ELLE OCCUPE (INDIQUEE
PAR LES 'TROUS D'ECRAN').

F> CLAMPMOUSE :

TRES IMPORTANT...FIXE LES VALEURS LIMITES DES COORDONNEES EN X ET EN Y DE
LA SOURIS... SI VOUS GEREZ UN ECRAN GRAPHIQUE, FAUT PAS QU'ELLE EN SORTE !

   a> POUR MODIFIER LES LIMITES DES COORDONNEES 'X' : A DOIT CONTENIR #$00
   b> POUR MODIFIER LES LIMITES DES COORDONNEES 'Y' : A DOIT CONTENIR #$01
                                             (ENFIN ETRE DIFFERENT DE #$00...)

DANS LES DEUX CAS, LES NOUVELLES VALEURS LIMITES SONT DANS LES 'TROUS D'ECRAN'
CA FAIT 2 FOIS QU'ON EN PARLE...

CE SONT DES ADRESSES RESERVEES A CHAQUE SLOT ET QUI SE TROUVENT THEORIQUEMENT
EN PAGE TEXTE, MAIS QUI N'APPARAISSENT PAS A L'ECRAN, D'OU LEUR NOM...

DANS LE CAS DE 'CLAMPMOUSE', VOILA OU DOIVENT SE TROUVER LES LIMITES:

                $478:OCTET BAS DE LA LIMITE INFERIEURE
                $578:OCTET HAUT DE LA LIMITE INFERIEURE

                $4F8:OCTET BAS DE LA LIMITE SUPERIEURE
                $5F8:OCTET HAUT DE LA LIMITE SUPERIEURE

G> HOMEMOUSE :

MET LES POSITIONS DE LA SOURIS AU COIN SUPERIEUR GAUCHE DE L'ECRAN...
A FAIRE SUIVRE D'UN 'READMOUSE'

H> INITMOUSE :

A APPELER AVANT TOUT AUTRE COMMANDE...C'EST LA MISE EN MARCHE

VOILA DONC LA SEQUENCE A FAIRE AVANT TOUTE UTILISATION DE LA SOURIS:

                           -  INITMOUSE
                           -  SETMOUSE
                           -  CLEARMOUSE

 4) LA LECTURE DES DONNEES
    ======================

APRES UN APPEL A 'READMOUSE', VOUS AIMERIEZ BIEN SAVOIR OU EST VOTRE SOURIS,
POUR PAR EXEMPLE DESSINER UNE MAIN SUR L'ECRAN GRAPHIQUE, ET SI L'UTILISATEUR
A OUI OU NON 'CLIQUE' DEPUIS...VOILA COMMENT FAIRE :

TOUTES LES DONNEES SE TROUVENT DANS LES 'TROUS D'ECRAN' A SAVOIR :

                $478+n  OCTET BAS DE LA POSITION EN X
                $578+n  OCTET HAUT DE LA POSITION EN Y

                $4F8+n  OCTET BAS DE LA POSITION EN Y
                $5F8+n  OCTET HAUT DE LA POSITION EN X

                $778+n  ETAT DU BOUTON ET DES INTERRUPTIONS

                'n'     REPRESENTE ENCORE ET TOUJOURS LE NUMERO DU SLOT,SI SI !

 PAR EXEMPLE, POUR UN ECRAN GRAPHIQUE (192*280) :

 LDX SLOT
 LDA $4F8, X    ! PAS BESOIN DE PRENDRE LES OCTETS HAUTS CAR 192<255
 STA VERT      ! ET DANS LA LARGEUR, ON A UNIQUEMENT 40 OCTETS SOIT UNE VALEUR
 LDA $478, X    ! HORIZONTALE DE 0 A 39  (CHAQUE OCTET CONTIENT 7 BITS QUI
 STA HORIZ     ! CORRESPONDENT A 7 PIXELS ET ON A BIEN  7*40=280 POINTS.)

 5) L'ETAT DU BOUTON
    ================

 TOUT SE TROUVE CONCENTRE EN $778+n, CHAQUE BIT DE L'OCTET AYANT UN SENS:

BIT 7      : LE BOUTON EST ENFONCE
BIT 6      : LE BOUTON ETAIT DEJA ENFONCE
BIT 5      : LA SOURIS A BOUGE
BIT 4      : RESERVE
BITS 3 A 1 : POUR LES INTERRUPTIONS
BIT 0      : RESERVE

POUR AVOIR LA MEILLEURE VUE POSSIBLE, J'AI CHOISI DANS MES PROGRAMMES DE
CONSTRUIRE UNE TABLE (ENCORE !)... Y'A PEUT ETRE MIEUX..L'APPEL EST LANCE !

LDX SLOT             ETAT:
LDA $778, X                CLIC HEX 00
JSR BOUTON                 DEJA HEX 00
-                          MOVE HEX 00
-                          INTE HEX 0000000000

BOUTON:

     STA BUT
     LDY #$07        ! UN OCTET FAIT 8 BITS...NON ?
     LDX #$00        ! ON COMMENCE A REMPLIR 'CLIC'
B1   ASL             ! ON VERIFIE QUE LE BIT 'Y' EST '1' OU '0'
     STA BUT
     BCC B2          ! C'EST '0'
     LDA #$01
     BNE B3
B2   LDA #$00
B3   STA ETAT, X      ! ON MET A JOUR LA TABLE EN QUESTION
     LDA BUT
     INX             ! SANS COMMENTAIRE
     DEY             ! IDEM-PAREIL QU'AU DESSUS
     BPL B1
     RTS             ! C'EST FINI, J'ME TIRE !


APRES TOUT APPEL A 'BOUTON', IL EST FACILE DE VOIR SI LA SOURIS A BOUGE OU PAS
OU SI L'UTILISATEUR (-TRICE) A CLIQUE...EXEMPLE :

     LDX SLOT
     LDA $778,X
     JSR BOUTON
     LDA CLIC
     BEQ ....           ! FAIT 'BIP' A CHAQUE 'CLIQUAGE'
     LDA #$87
     JSR $FDED

BON, BEN JE CROIS QUE VIENT LE MOMENT EMOUVANT DE NOUS QUITTER..J'ESPERE QUE
J'AI ETE CLAIR (SINON TANT PIS). VOUS POURREZ DE TOUTE FACON ME JOINDRE SUR
MINITEL 'POUR DE PLUS AMPLES INFORMATIONS' ! :

             TEL: 3615
             CODE: RTEL
             B.A.L.:CAPTAIN CRACK        LAISSEZ VOTRE PSEUDO ET ON SE REVERRA.
===============================================================================


Retour sommaire

hr DEPME

Face 1 : SPACE QUEST II.


-------------------------------------------------------------------------------
SPACE QUEST II                                       (K)racked by Steff + Loic.
-------------------------------------------------------------------------------

Pour cracker ce soft, il suffit de modifier sur une copie locksmith de la face
de boot de l'original, les octets suivants :

Piste $0C 00 05 : 18 60

C'est le vérif de l'original qui était chargée en $205.

-------------------------------------------------------------------------------


Retour sommaire

hr DEPME

Face 1 : ULTIMA V.


-------------------------------------------------------------------------------
ULTIMA 5         (k) The Highlanders Team featuring Godfather and The ACS-Dijon
-------------------------------------------------------------------------------

Ah! Le soft que tout le monde attendait en ce début 1988...

Pour le déplomber, c'est simple ma foi. surement à cause du rush causé par le
retard de la sortie de ce soft, il ont pris le tps de penser au soft, et se
sont alertés pour la protection..baclée!

Pour le cracker, il vous suffira de booter un advanced demuffin 1.1, puis de
faire un BLOAD RWTS MODULE en page B7, avec le nom RWTS ULTIMA 5..ok?
Ensuite, convertissez le disk original et ça marche !

                                                                   Faaaa-cile !
-------------------------------------------------------------------------------


Retour sommaire

hr DEPME

Face 2 : AMERICAN ROAD RACE.


--------------------------------------------------------------------------------
Tiens, Road Race à fait Crac... Ou comment Cracker Road Race par Oliver Twist..
--------------------------------------------------------------------------------



          Bon, ce coup ci je vous fait pas un grand fichier parceque le
plombage n'en vaut pas le coup... Par contre, je vais me mettre à la Bete du
Gévaudan et si j'y arrive d'ici DEP.10, ça risque de faire un truc assez
balaise dans la magnifique série du magnifique Godfather... Mais j'ai bien dis
si j'y arrive parceque c'est le genre de truc ou y faut du temps... beaucoup de
temps... Quoi, j'en entends qui gueullent parcequ'ils sont la pour déplomber
Road Race ??? Du calme, je vous dis qu'il y'en a pour 1 minute à le déplomber.
(une minute quand je vous dis ce qu'il faut faire... parceque ca m'a pris à peu
prés 30 minutes de ma précieuse vie...) Ca c'est bizare, l'inspiration n'arrive
pas... Allez, parceque c'est vous, je vous balance d'abord le déplombage et je
délire aprés... Et puis comme ça, Godfather pourra virer des passages s'il n'y
a plus de place sur son bo disk...

Aors voila, Road Race se copie parfaitement sans problème et sans bavures avec
un locksmith FDB mais Ho surprise, on ne s'y attendais pas du tout, le soft
plante juste apres la présentation... Oh le vilain... (Vous avez remarqué que
j'ai d'abord écrit 'Ho' puis 'Oh' mais c'est pas grave puisque vous ne l'aviez
pas vu...) Donc, vous faites une belle copie avec lolo et vos modifiez ça:

P$0 S$B B$33: 69 FF EA
------- B$3D: E9 FF EA


  Voila, c'est fini... et en plus, ça marche... Mais ce qui m'emmerde, c'est
que je n'ai plus rien à vous raconter... Ah si... On va surment monter avec
deux potes une nouvelle Crack Band... The BCB: The Binoclards'Crack Band...
J'espère que ça va marcher parceque l'autre jour, Nyarlatop et The Satanic
sont venu manger des raviolis chez moi et m'ont dis que c'était pas bon...
Conclusion une haine intense s'est instalée entre nous et c'est ainsi qu'ils
ont voulu m'inviter à manger quelque chose de pire... Heuresement que j'ai dit
non, ils voulaient m'empoisoner avec une choucroute ignoble qui trainait dans
leur frigo depuis au moins trois mois... Salauds... je vous aurait... Enfin on
va surement se monter une BAL au 36 14 BUSTER alors si vous voulez nous
insulter, passer nous voir... Je pense qu'elle s'appellera THE BCB... Donc si
vous avez des bosorijinoxtouneuffes, vous passez nous voir... Et on vous fera
tout plein de grosses bises...

Allez, maintenat ça suffit, j'arrete de parler... (Qui a dit 'enfin...')
Alors je fait une grosse bise à Catherine et une un peu moins grosse
à vous tous...



                                        A Dep.10... bientot!


                                                O.Twist...

_______________________________________________________________________________


Retour sommaire

hr DEPME

Face 2 : BALANCE OF POWER V2.


+-----------------------------------------------------------------------------+
! BALANCE OF POWER V2   (C) 1987 BY MINDSCAPE           DENY FROM HIGHLANDERS !
+-----------------------------------------------------------------------------+

Salut mes tous bos !!!!

Vous vous souvenez de ma correspondance avec le Père Noel dans DEP8 ? Oui ?
Il m'indiquait une méthode pour déplomber Balance of Power, soft bestial si il
en est.....
Ouais, eh ben manque de pot, le Papa Noel, il s'est gourré....son crack n'est
pas complet : en effet, avec une copie déplombée avec la méthode donnée dans
DEP8, la sauvegarde de partie est impossible à effectuer sans détruire ladite
copie ( ce qui est, reconnaissons-le, assez génant.....) !!!!!

Seulement, moi, je lui faisais confiance au Père Noel, et aveuglement, j'ai
suivi les conseils qu'il m'a donné....résultat: j'ai commencé à faire circuler
une copie mal déplombée de Balance of Power avant de m'apercevoir qu'elle était
mal déplombée ( vous me suivez ??? ) !!!!!

Donc : - La première version de ce crack est mal déplombée....
       - Par chance, St-Sylvestre m'est apparu et m'a donné la fin de ce
         crack, ce qui m'a permis de diffuser une version V2 de ce soft,
         version qui elle, à l'inverse de la précédente, marche parfaitement...
         ( pour reconnaitre cette version V2 de la V1, c'est simple: il suffit
         de booter votre disquette de Balance of Power:la mention V2 apparaitra
         en inverse lors du chargement du programme....)

- QUESTION : Pourquoi la première version est-elle mal déplombée ????
---------------------------------------------------------------------

- REPONSE : Parce que ....j'explique ( ploque ) :
-------------------------------------------------
Vous savez tous de mon précédent fichier sur la chose, que la protection de
Balance of Power repose en partie sur le changement des tables de translation
du ProDos....
Les tables de translation servent à transformer les nibbles ( qui se trouvent
au niveau du disk ) en octets qui sont eux engrangés dans la mémoire et vice
et versa....Si on change ces tables, le codage nibble-octet qui est effectué
grace à celles-ci changera aussi.....Prenons un exemple:

Soit une suite de nibbles d'un programme codée avec une table X.
--> Si on lit la suite en question et on décode le tout avec la table X,
    pas de problème, on trouvera bien le programme...
--> Si on lit la suite et on décode avec une table Y, les octets obtenus au
    décodage ne seront pas les bons, car on aura codé un programme avec une
    table X et on l'aura décodé avec une Y....

Eh bien, pour Balance of Power, les tables de translations ont été changées,
c'est à dire qu'avec un ProDos normal et ses tables X, on n'arrive pas à
décoder correctement l'original ( qui a été codé avec des tables Y !!!)...
Ce qu'on fait alors dans ce cas-là, c'est qu'on lit l'original et on le
décode avec une table Y, puis on le recode avec une table X et on écrit le
programme ainsi recodé sur une disquette vierge....
Ainsi, sur la disquette vierge ( qui ne l'est plus !), il faudra utiliser pour
décoder le programme une table X (car on a codé le programme avec une table X).
Aussi, il faut changer dans le programme toutes les tables Y par des tables
X....( je simplifie mais c'est en gros ça...), pour que celui-ci soit bien lu..
Mais seulement voilà: pour Balance of Power, j'ai changé certaines de ces
tables ( initialement Y ) pour les transformer en tables X ( c'est à dire
celles du ProDos standard...), mais j'en ai (ou plutot ' le Père Noel en a ')
oublié deux, celles-là meme qui s'occupent de la sauvegarde d'une partie en
cours....
D'où, si on essaye de sauver une partie, le programme la sauvera avec une table
Y, puis la relira ( pour la vérifier ) avec une table X, d'où gros bordel !!!!

Pour passer de la version V1 à la version V2 de ce crack, il suffit donc de
changer les deux tables Y que j'ai oublié de modifier par deux tables X...
Ce qui se traduit en définitive par :

T$ 1C  S$ 02  octet $03 : 96 ( was:FF )
              octet $FF : FF ( was:96 )
T$ 20  S$ 02  octet $03 : 96 ( was:FF )
              octet $FF : FF ( was:96 )

                        ------------------
Pour ceux qui ont raté DEP8, voici ce qu'il faut faire pour obtenir une version
parfaitement déplombée de Balance of Power :


- Cracking : première partie : démuffin :
-----------------------------------------

Brun-ez votre Advanced Demuffin 1.1 frelaté....puis, faites un Exit to monitor.
De la, tapez :

* B942:18        ( pour annuler les controles sur les checksums...)
* BA96:3F
* BAFF:00        ( pour la table de translation )
* 800G           ( pour revenir a advanced demuffin 1.1 )

Puis, démuffinisez l'original....
Puis, avec un éditeur de secteurs, recopiez les:

T$00  S$00  de l'original sur les   T$00  S$00 de la copie démuffinisée.
      S$0C                                S$0C
      S$0D                                S$0D
      S$0E                                S$0E

                        ------------------

- Cracking : deuxième partie : fin des problèmes de table de translation :
--------------------------------------------------------------------------

Prenez un éditeur de secteurs et changez sur la copie démuffinisée:

T$00  S$0E  octet $32: 60    (was:A9)
T$1C  S$03  octet $96: 00    (was:FC)
            octet $FF: FC    (was:00)
T$20  S$03  octet $96: 00    (was:FC)
            octet $FF: FC    (was:00)
T$1C  S$02  octet $03: 96    (was:FF)
            octet $FF: FF    (was:96)
T$20  S$02  octet $03: 96    (was:FF)
            octet $FF: FF    (was:96)

                        ------------------

- Cracking : dernière partie : on enlève la vérif :
---------------------------------------------------

On prend donc un éditeur de secteur et on change sur la copie démuffinisée:

T$1A  S$08  octet $84: EA EA EA   (was: 20 00 FF)
T$1E  S$08  octet $84: EA EA EA   (was: 20 00 FF)

Enfin, on change:

T$05  S$0B  octet $27: F7 AC      (was: AC A0)

Cette dernière modification ne correspond à rien si ce n'est à la correction
d'une faute d'orthographe que j'ai repéré en jouant...( le prg marque
originellement " And no " au lieu de " And now "....).
That's all Folks.....

                        ------------------

Et voili, et voila, Hup Hup Hup et Barbatruc....

----------------------------------(k) PERE NOEL - ST SYLVESTRE - DENY 1987-----


Retour sommaire

hr DEPME

Face 2 : BORROWED TIME.


-------------------------------------------------------------------------------
HOW TO DEPLOMBE BORROWED TIME BY THE MOST BO :  Oliver Twist... c'est moi...
-------------------------------------------------------------------------------
(Attention, voici le fichier le plus rapide de l'histoire: 1h en tout pour
l'écrire... Attention aux bugs !...)


      Conversation trés privée entre Godfather et moi...

                Dring... Dring (Ca c'est la sonnerie du téléphone... si,si...)

        - Allo ?...
        - Allo ma poule ? Salut c'est Olivier...
        - Lequel ?
        - Ben, le plus bo...
        - Ah, c'est toi...
        - Et oui, c'est moi... Dis donc, t'est toujours pret à te jeter par la
          fenetre parce que tu est en manque de fichiers...
        - Justement, tu me dérange en pleine ouverture de la mienne. (de
          fenetre...)
        - bon, allez, comme je t'aime bien je vais te refiler un bon vieux
          déplombage de 1985... Ca te va ???
        - Ho, tu sais... Au point ou j'en suis... C'est quoi ton déplombage ???
        - Borrowed time... Et puis juste aprés, je te fais Road Race...
        - Super, c'est parfait... tu sais que tu est vraiment le plus beau, le
          plus génial, le plus intelligent, le plus viril, tu est mon sauveur,
          je t'aime, je suis fou de toi, de tes bos zyeux, de ta belle chute de
          reins, de tes oreilles, de tes mains fines, de...
        - Arrette... Ca suffit, les lecteurs vont finir par croire que c'est
          moi qui écrit ton texte... (Mais bien sur que non c'est pas moi...)
        - Bon ok, tu m'envoies tout ça d'ici trois jours...
        - He, du calme, c'est long à écrire un fichier... Allez, je te poste
          tout ça lundi, (on est jeudi...) tu le recois mardi ou mercredi...
          Et tu es heureux...
        - Attention... si j'ai rien merceredi, je ne t'attend pas, je
          diffuse...
        - (Putain, on se croirait à la redaction des Dingodossiers...)
          Dis moi, tu en manque vraiment de fichiers ???
        - Ta gueulle... Au boulot...
        - Tres bien, salut ma poule...
        - Salut ma cocote à poil dur...



  Bon, on a parlé d'autres choses mais ça ne vous interresse pas... Mettons
nous plutot au déplombage de borrowed time... Moi, j'ai bien aimé et ca m'a
pris a peu prés deux heures et deux verres de Coca (de 23h00 à 1h00. Meme que
papa et maman ont pas été trés content du nombre infernal de recalibatrion que
j'ai fait ce soir la. Vous m'exusez, il est 13h04 et je viens de me rendre
compte que je vais etre à la bourre à mon boulot (et oui, y'en a qui bossent
pendans les vacances: LES MEILLEURS...) alors je vous reprend (oh oui, prends
moi encore...) ce soir... de toute façon, j'ai rien d'autre à foutre...


  Ca y'est, il est 20h40 et j'ai fini de bosser comme un dingue... Ou en étions
nous ? bon, je remonte lire tout ça et je continue... Mouai, j'ai pas fait
grand chose... Tiens, je vais vous montrer comment se faire de la pub en
faisant croire qu'on en fait pour les autres... Y'en a-t-il parmis vous qui
connaissent Sygmapple ??? Oui ? Et bien que les deux premiers vous plaisent,
ou qu'il vous fillent des boutons, prenez absolument le numero trois qui
devrait sortir d'ici peu... Je m'explique... (non je ne mettrais pas
'ploque'...) Je vais pour cela prendre une phrase célébre de ce cher Godfather
et la modifier un petit peu : Je suis sur qu'il y en a parmis vous qui se
disent: 'Le langage Machine c'est trop dur pour moi...' Et bien non !!! Car
grace au plus Bo, (Comment ça: c'est qui le plus Bo ??? On vous ne le répétera
donc jamais assez... le plus Bo c'est moi...) et à Sygmapple, vous allez
pouvoir devenir un maitre de la programmation... (Oui, c'est ça, un maitre
comme MOI.) En effet je vais avoir une rubrique 'cours de... d'assembleur' qui
commence au niveau le plus bas que l'on puisse trouver... il suffit simplement
d'avoir quelques connaissance en Basic et de ne pas etre trop bete (mais si
vous inssister, vous pouvez l'etre un peu...) Conclusion si vous n'avez plus
qu'un disk vierge, ne le dépucelez qu'avec Sygmapple 3...


  Allez hop, assez causé, on déplombe... Borrowed time est un disk (mais si..)
en 16 secteurs (ouf... coucou The Satanic...) mais ou les marqueurs ont été
modifies... On va donc tout d'abbord récuperer la routine de lecture de ce
Bo(rrowed time... là, il y a un gag trés subtil... si, si, cherchez bien...)
jeu. Et pour cela, on fait ceci :


CALL-151
1600<C600.C700M
16F8:A9 0 8D 55 8 4C 1 8
1600G (Avec Borrowed time in the lecteur de disk...(Ce message ne doit pas
etre tapé (et le précédent non plus (oh et puis merde, faites ce que vous
voulez...))))


Et hop, dès qu'on a la main, on saute regarder ce qu'il y a en $801 et on
remarque qu'il y a un petit saut en $900... On regarde donc en $900 et on voit
un autre petit saut en $B2A On va donc faire un tour en $B2A et on remarque un
JSR $6000 qui se trouve etre la présentation trés belle mais trés con... (ils
affichent une suite de fenetres au lieu de faire des calculs scientifiques...
Enfin, c'est leur problème...) Et juste avant ce JSR, il y a un long acces
disk... On va donc pouvoir comprendre comment marche leur RWTS... On regarde
vite fait et comme on est trés intelligent, (vous je sais pas mais moi c'est
trés trés nettement au dessus de la moyenne...) on comprend tout de suite...
(Je vous céde que j'ai tout de meme quelques faiblesses en français, mais comme
je hais le français, je n'en ai rien à battre...) Et on realise les
differentes choses suivantes:

On recommence la meme chose qu'au dessus. (vous n'etes pas obligé de
le refaire si vous n'avez touché à rien...)

1600<C600.C700M
16F8:A9 0 8D 55 8 4C 1 8
1600G

puis 2000<900.1FFFM

De là, on fait C600G avec un dos dans le drive et on fait un grand sourir en
attendant le ] prompt.

hop, on fait un CALL-151

puis 900<2000.36FFM
suivit d'un superbe Control-C
et d'un magnifique BSAVE RWTS.BORRO,A$900,L$16FF
       
  En suite, on prends son meilleur assembleur par la main et on lui demande
gentillement de nous assembler ça (Attention, j'ai rajouté pour les ceusses qui
n'on qu'un drive des lignes qui débutent par un *; faites gaffe à pas vous
gourer dans vos disk parceque je ne gere aucun affichage du genre 'disk
original' ou 'copie'... De plus, je vous donne plainement le droit de critiquer
ce programme parcequ'il n'écrit pas les secteurs dans le sens inverse d'où
perte de temps, mais je n'écouterais pas vos critique...en effet, le temps que
mets ce programme pour démuffiniser un disk est exactement celui que je mets
pour aller boire un Coca dans la cuisine...):


       

         ORG    $1F00


         LDA #$00
         STA $BA0 ;SECTEUR
         STA $06
         STA $B9E ;PISTE
         STA $B7EC
         STA $B7EB
         STA $B7ED
         STA $B7F0

         LDA #$20
         STA $B9A ;BUFF CHARG. HAUT
         STA $B7F1
         LDA #$90
         STA $BA2 ;FIN DU BUFF CHARG.


         LDA #$02
         STA $B7F4
*        LDA #$01 ;drive écriture... à rajouter si 1 drive
         STA $B7EA


DEBUT    JSR $B99
*        STA $C010 ;à rajouter si 1 drive
*        JSR $CCED ;à rajouter si 1 drive
         LDX #$00
AGAG2    TXA
         PHA
         LDA #$B7
         LDY #$E8
         JSR $B7B5
         INC $B7ED
         LDA $B7ED
         CMP #$10
         BNE TRUC
         LDA #0
         STA $B7ED
         INC $B7EC
TRUC     INC $B7F1
         PLA
         TAX
         INX
         CPX #$70 ;7PISTES...
         BNE AGAG2

*        STA $C010 ;à rajouter si 1 drive
*        JSR $CCED ;à rajouter si 1 drive
         LDA #$20
         STA $B9A
         STA $B7F1
         LDA $B9E
         CLC
         ADC #$7
         STA $B9E
         INC $06
         LDA $06
         CMP #$5 ;5*7=35 PISTES
         BNE DEBUT
         RTS



  Ah, merde, je viens de m'asseoir sur mes lunnettes et je suis dans la merde
parceque j'ai pété une branche... Enfin, ça tiens à peu prés en équilibre...
Bon, passons, maintenant que tout ça est assemblé et sauvé sur disk sous le non
de demufborro, vous faites ceci:


BLOAD RWTS.BORRO
BLOAD DEMUFBORRO
CALL-151

Là, je vous laisse ruser comme un fou pour essayer de vous retrouver sur la
piste 0... C'est pas dur, si par exemple vous avez un //c, vous n'avez qu'à
reloger la routine de boot en $9600 et mettre en 9634:4C 59 FF... pour un //e,
vous cherchez ou il faut mettre ce JMP ou bien vous ne vous gonflez pas, vous
faites ça en 96F8 parceque ça ne détruira que $800...puisqu'il n'y a qu'un
secteur de chargé...

Control-E Return
:00 60

BA3:4C 59 FF 60
PUIS 900G

  (Tout ça, c'est pour initialiser plein de trucs pour sa routine de
lecture...)


Ensuite, on rétabli ce qu'on a modifié plus haut de cette manière:

BA3:20 29 11

  Et à partir de ce moment là, on peut taper d'une main agile et vigoureuse,
la phrase de la victoire sur la protection... 1F00G (Ca c'est une phrase
qu'elle est belle...) Bon, si vous avez 2 drives, vous allez prendre un
café pour vous reposer de ce travail fastidieux... Et si vous n'en avez
qu'un, c'est bien fait pour vous... Na !!! Tralalalalère...
y va etre obligé de rester à coté de son Apple pour changer les disks et
appuyer sur des boutons... Pas moi, Pas moi...

Heu, s'il vous plait, voulez vous cessez ces enfantillages messieurs...

  Bon, ca y'est, vous avez un bo disk bien copiable... et bien profitez
en pour faire la deuxième face de la meme façon... Et hop, un deuxième café...

  Maintenant, on va passer au truc le plus chiant... le boot... encore,
la c'est pas trop dur... Ce qui est chiant c'est que c'est The Satanic qui m'a
prété tous les beaux originaux que j'ai déplombé mais que ce fumier les a
repris donc je n'ai plus d'original pour comparer les routines de lectures et
je suis dans la merde... Mais comme je vous aime tendrement, je vais me forcer
un peu et vous montrer que je suis le plus fort... Je m'arme donc d'un crayon,
d'un papier, d'un éditeur de secteur, d'un casque, de quelques rations de
survie, d'un sac de couchage et je pars à la recherche de toutes les choses à
modifier...


  C'est marrant, je suis pas vraiment sur de moi... Enfin, s'il y a des
érreurs, rendez vous dans DEP.10... Et puis de toute façon, vous n'avez pas à
etre préssé puisque ça fait un bout de temps qu'il est diffusé ce beau
programme...


  Je crois donc me rappeler qu'il faut changer tout ça: (Désolé, je n'ai plus
les anciennes valeurs...)

P$0 S$0 B$C0: F7
------- B$CA: ED
------- B$D5: E2
------- B$FB: C9 DE EA

P$0 S$2 B$06: C9 AA EA

P$0 S$9 B$D4: A9 AA EA
------- B$DA: A9 96 EA

P$3 S$B B$1B: F7
------- B$25: ED
------- B$30: E2
------- B$56: C9 DE EA
------- B$61: C9 AA EA

  Et si ça boot, vous n'avez plus qu'à etre heureux et à m'admirer comme il se
doit... Bon, moi je vais me mettre à Road Race mais je sent que je vais faire
un truc trés long parce que c'était pas dur et pratiquement pas drole...


                                                A tout de suite...



                                                        O.Twist...


Retour sommaire

hr DEPME

Face 2 : CODAGE PART 1.


    Le code dé-code ,créé par 'EL MATHOS' le 13/11/87

     -----------------------------------------------------------
     Avant toute chose ,puisqu'il s'agit du premier de mes
     articles dans DEPLOMBAGE MODE D'EMPLOI ,je tiens à mettre
     au point certaines choses:
     1 - Je ne suis pas et ne serai jamais un cracker.
     2 - Ma carte de visite serai plutot:
         'EL MATHOS' from D.H.V.
         Création ,protection ,recherche et bidouilles diverses
         à l'EXCLUSION du crackage et de toutes ses formes.
     3 - Bien que souvent en étroite collaboration ,D.H.V. et
         P.A.D sont DEUX CLUBS DISTINCTS dont les principaux
         membres sont:
         Dany sector  from P.A.D
         'El mathos'  from D.H.V.
     J'espère ainsi que les confusions faites par certains
     cesseront enfin. Merci d'avance.
     -----------------------------------------------------------

     Cher lecteur ( ou éventuellement chers lecteurs ,ou
     chère lectrice ou encore chères lectrices ), un instinct
     genial semble vous avoir guidé durant ces derniers instants

     Ne gaspillez-pas un tel coup  de chance, continuez donc à
     lire cette doc passionnante et enrichissante, surtout pour
     ceux qui n'ont rien à faire d'autre...

     Et j'oubliai, si vous ne possédez pas d'apple // ( toutes
     versions confondues, avec une préférence pour le //c et le
     //gs ),oubliez tout ceci et allez vous faire cuire un racine
     cubique de 729 !!!

                           Introduction

     Si je vous dis "code", à quoi pensez-vous ?

     1 - Canal plus
     2 - Aux feux d'une voiture
     3 - A quelques bidouillages destinés à modifier le nom +
         ou - protégé par un auteur quelconque
     4 - A un système de protection intéressant mais limité
     5 - A un système complexe, puissant, et partout omnipresent
     6 - Au schmilblic

     Selon la meilleure proposition, lisez un des paragraphes
     suivants:

     1 - Veinard ...
     2 - Rebooter un bon jeu d'arcade bien nul, speedway par
         exemple.
     3 - Si vous etes un name-killer, pendez-vous tout de suite
         au lieu d'attendre de me rencontrer.
     4 - Vous etes dur la bonne voie, mais la route est longue.
     5 - Mon avis est suffisamment proche du votre pour affirmer
         ceci: nous sommes d'accord.
     6 - ( censuré ) !!!

     Avant de passer aux choses sérieuses ( et elles le seront )
     je profite de cette introduction pour quelques messages
     personnels:

     ( selon la formule habituelle .. ) THANKS TO:

     - Dany Sector pour m'aider à préparer et diffuser mes
       diverses créations ( d'autant qu'il est le seul , j'attend
       vos propositions ).
     - Numéro 6 pour son soutien moral et trés occasionnelement
       matériel, mais capital.
     - Godfather and Co pour leurs docs bénévolement écrites,
       regroupées et diffusées.
     - Robin Hood et Fanfoué pour leurs encouragements.

     Mon plus vif ressentiment à :
     - Les name-killers en activité ( Je pardonne à tous ceux
       chez qui la sagesse l'a emportée. )
     - Tous ceux qui osent vendre ce qu'ils n'ont pas le droit de
       vendre.( J'espère qu'ils comprendront et se reconnaitront)

     Et voilà pour les messages personnels.

     Et je réponds maintenant à la question que personne ne se
     pose: A quoi sert cette doc à la ... ?

     Tout simplement à vulgariser l'utilisation des codages en
     tout genre, particulièrement les résistants, cela dans un
     but humanitaire pour sauver les crackers de l'ennui...

     D'où le badge suivant:

                           ***********
                       **** OPERATION ****
                      *      CODAGE       *
                      *    SAUVER LES     *
                       **** CRACKERS. ****
                           ***********

     Dans ce but, plusieurs rubriques:
     - "Qu'est ce ?" : Etude générale d'un procédé de codage.
     - "Application pratique" : pour vous aider à créer vos
       routines.
     - "Exemple" : pas de commentaires ,sauf sur ceux qui n'ont
       pas compris ce que sera cette rubrique.
     - "Moyens de lutte" : pour vous guider sur la voie du
       décodage direct.
     - "A propos d'anstrom" : pour vous aider à manipuler un des
       meilleurs outils de recherche et de décodage ( référence
       sur la version 2.3 ).

     Les différents codages que j'ai étudié sont présentés dans
     un ordre de difficulté à peu près croissante ( cf plan
     général plus loin ).

     N'ayez donc aucune crainte, meme les moins branchés langage
     machine peuvent suivre le début.
     Mais ne réver pas ,tout suivre va etre assez difficile.
     Mais ne vous affolez pas non plus, ce premier chapitre
     restera trés simple dans l'ensemble.

     Je signale aussi aux plus branchés que le début risque de
     leur paraitre un peu nul, mais il fallait bien commencer
     quelque part. Néanmoins qu'ils ne s'inquiètent pas : la fin
     est infernale ( notamment les formats spéciaux, le codeur
     automodifiable est le compresseur binaire, mais pour cela
     il faudra attendre mes éventuels prochains articles ) !!!

                            PLAN GENERAL

     Premier livre: Les codages simples
       I/ Les codages par substitution
          A - Les codes à opérateur unique
          B - Les codes à rotation
          C - Les codes à transcription
          D - Les codes à pseudo-substitution
      II/ Les codages évolutifs
          A - Les codes à opérateur évolutif
          B - Les codes à entremelement
     III/ Les codages à modification d'occupation mev
          A - Les codes à échange
          B - Les codes à division

     Second livre: les codages multiples
     ( contenu exact sous réserve )
     Entre autre: formats spéciaux et codeurs à mot de passe.
                  codage GENESIS.

     Troisième livre: Les codages complexes
     ( contenu exact sous réserve )
     Entre autre: compresseur binaire.
                  codage "invisible": IRD.

     Quatrième livre: Annexes
     ( contenu exact sous réserve )
     Entre autre: les principes du décodage indirect

     Attention : Ce plan n'est donné qu'à titre purement
                 indicatif, et n'est en aucun cas restrictif.

     NB: Chaque article sera précédé en plus de son identifica-
         tion d'un code de difficulté

     Echelle des niveaux:
       HN - Hors niveau ,accessible à tous
        0 - Accessible avec une connaissance limitée du langage
            machine.
        1 - Accessible avec une connaissance générale du langage
            machine.
        2 - Accessible avec une bonne connaissance du langage
            machine et une certaine expérience d'utilisation.
        3 - Accessible avec une connaissance poussée du langage
            machine et une bonne expérience d'utilisation.
        4 - Niveau 2 ou 3 avec une connaissance de base des
            processus de commande du drive.
        5 - Niveau 2 ou 3 avec une connaissance poussée des
            processus de commande du drive.

     LEGENDE DES ORGANIGRAMMES UTILISES A L'AVENIR:
       " ( ... ) " : Limite du cadre d'une commande. Il est
                     recommandé de tracer ces cadres sur un
                     tirage papier éventuel.
     " ** ... ** " : Limite du cadre d'un test conditionnel. L'
                     expression contenue dans ce cadre peut etre
                     soit vraie (oui), soit fausse (non), Il est
                     recommandé de tracer ces cadres sur un
                     tirage papier éventuel, dans une autre
                     couleur que celle de " ( ... ) ".
     " A --> --= " : Flèches de liaison entre les cadres.
     " !       ! "   Il est recommandé de tracer les flèches sur
     "     !   V "   un tirage papier éventuel.
     " <-- V     "

     " ( JSR ) <---> " : Appel de sous-programme.

     " oui " & " non " : Indicateurs liés aux cadres
                         conditionnels.
     " =---------= " : Cadre de sous-programme. Il est recommandé
     " !         ! "  de le tracer sur un tirage papier éventuel.
     " =---------= "

     " =   RTS  = " : Commande de retour de sous-programme.
     " =--------= "

     " 'POINTEUR' " : Contenu de l'adresse pointée par POINTEUR.

     " 'POINTEUR' ,Index " : Contenu de l'adresse pointée par
                             POINTEUR indéxé par le registre
                             INDEX.
     " A <-- B " : Donne à A la valeur B.

     " $xx " : Valeur héxadécimale.


Retour sommaire

hr DEPME

Face 2 : CODAGE PART 2.


     Le code dé-code ,créé par 'EL MATHOS' le 13/11/87


                  PREMIER LIVRE - LES CODAGES SIMPLES

     "Qu'est ce?": ( HN )
     Un grand nombre de codages repose sur une transformation
     effectuée par un programme court utilisant une boucle
     répétitive et effectuant à chaque passage la modification d'
     un octect. Un tel système de codage sera appelé codage
     simple, bien qu'il ne le soit pas forcement.

     I/ Les codages par substitution

     "Qu'est ce?": ( HN )
     Le principe du codage par substitution est de remplacer un
     code héxadécimal par un autre code héxadécimal ,toujours le
     meme. Le decodage s'effectuant par la manoeuvre inverse.
     Ce sont les systèmes les plus anciens, les plus connus et
     les plus utilisés à ce jour ,mais leur efficacité est trop
     faible désormais pour que leur utilisation soit encore
     intéressante. Néanmoins il est préférable de les connaitre
     en détail car les protecteurs ne sont pas encore tous per-
     suadés de leur manque d'efficacité.

     A - Les codes à opérateur unique

     "Qu'est ce?": ( 0 )
     Ils consistent à modifier chaque octet par un opérateur
     unique et un seul, EOR, ADC, SBC, INC, DEX, les trois
     premiers utilisant un paramètre.
     Si les codages par substitution sont relativement grillés,
     ceux-ci sont totalement carbonisées. Alors ne facilitez pas
     le travail des name-killers, utilisez autre chose.

     Le EOR est de loin le plus utilisé de tous. Un tel choix
     n'etait pas dépourvu de logique, à l'époque, puisque le
     éorage avec un paramètre bien choisi rend les octets codés
     méconnaissables.

     ex: B O N J O U R  eor #$37 donne  u x y è x b e

     On remarquera aussi que le eor modifie généralement les
     écarts entre les octets ( 12 car. entre B et O contre 2
     car. entre u et x ) ce qui evite de conserver d'éventuelle
     progression logique à l'opposé du ADC #$xx.
     ( On remarque en effet que SBC #$xx = ADC #$100-xx ,INC =
     ADC #$01 et DEC = ADC #$FF : les 4 se ramènent à un ADC )

     Je ne parlerai pas du ORA et du AND qui ne permettent pas un
     décodage viable pour les 256 octets ,puisqu'il "égare" une
     partie des informations en forçant certains bits à 0 ou à 1
     sans tenir compte de leur valeur initiale ,ce qui rend
     impossible le décodage de ces bits.

     "Application pratique": ( 0 )
     Un organigramme très simple au coeur duquel on place
     l'opérateur désiré pour effectuer le codage, et l'opérateur
     inverse pour effectuer le décodage.

        ENTREE PRINCIPALE
     ( Adr 1 <- adresse de début )
                   !
                   V
     ( Adr 2 <- adresse de fin   )
              !
              V                 non
     ( A <- 'Adr 1' ) <---------------=
             !                        !
             V                        !           oui
      ( OPERATEUR )         ** Adr 1 >= Adr 2 ** -----> FIN
             !                        A
             V                        !
     ( 'Adr 1' <- A ) -------> ( Adr 1 <- Adr 1 + 1 )


     "Exemple": ( 0 )
     Une application directe de l'organigramme précédent dans le
     cas où : Opérateur = EOR #$A5
     Adresse 1 = $800 et est stockée en $3C - $3D
     Adresse 2 = $9A0 et est stockée en $3E - $3F

     Soit:           Qui donne assemblé en $300

       LDA  #$00             300 : A9 00
       STA  $3C                    85 3C
       LDA  #$08                   A9 08
       STA  $3D                    85 3D
       LDA  #$A0                   A9 A0
       STA  $3E                    85 3E
       LDA  #$09                   A9 09
       STA  $3F                    85 3F
       LDY  #$00                   A0 00
     1 LDA  ($3C),Y                B1 3C
       EOR  #$A5                   49 A5
       STA  ($3C),Y                91 3C
       INC  $3C                    E6 3C
       BNE   2                     D0 02
       INC  $3D                    E6 3D
     2 LDA  $3D                    A5 3D
       CMP  $3F                    C5 3F
       BCC   1                     90 EE
       LDA  $3C                    A5 3C
       CMP  $3E                    C5 3E
       BCC   1                     90 E8
       RTS                         60     ( 43 Octets )

     ( Programme 1 )

     J'espère que vous avez remarqué que ce programme est trop
     long et trop systématique, et avec un petit effort:

       LDA  #$00             300 : A9 00
       STA  $3C                    85 3C
       LDA  #$08                   A9 08
       STA  $3D                    85 3D
       LDY  #$00                   A0 00
     1 LDA  ($3C),Y                B1 3C
       EOR  #$A5                   49 A5
       STA  ($3C),Y                91 3C
       INC  $3C                    E6 3C
       BNE   2                     D0 02
       INC  $3D                    E6 3D
     2 LDA  $3D                    A5 3D
       CMP  #$09                   C9 09
       BCC   1                     90 EE
       LDA  $3C                    A5 3C
       CMP  #$A0                   C9 A0
       BCC   1                     90 E8
       RTS                         60     ( 35 Octets )

     ( Programme 2 )

     "Exemple": ( 1 )
     On peut encore améliorer ce programme en le rendant plus
     rapide grace à cette organigramme:

      ENTREE PRINCIPALE
        ( Y <- 0 )
             !
             V
     ( X <- Nb de changement de page )
             !
             V                      non   FIN
     ( A <- 'Adr 1',Y ) <----=-------=     A
             !               !       !     !oui
             V               !       !     !
      ( OPERATEUR )       non!    ** Y < $A0 **
             !               !       A
             V               !       !oui
     ( 'Adr 1',Y <- A )     ** X = 0 **
             !               A       A
             V               !       !
       ( Y <- Y+1 )          !       !
             !               !       !
             V        non    !       !
        ** Y = 0 ** ---------=       !
             !                       !
             =--------> ( Adr 1 <- Adr 1 + 256 )
                oui     (      X <- X + 1      )


     X contient le nombre de changement de page ( $01 )
     $A0 étant la partie inférieure du nb d'octet à tranférer
     ( sur $800 à $9A0 = $A0 sur $01A0 )
     Dans cette exemple on passe de 13199 cycles à 9654.

     Toujours le meme exemple ,assemblé en $300 avec cette
     organigramme:

       LDX  #$01             300: A2 01
       LDY  #$00                  A0 00
     1 LDA  (Adr 1),Y             B9 00 08
       EOR  #$A5                  49 A5
       STA  (Adr 1),Y             99 00 08
       INY                        C8
       BNE   2                    D0 07
       INC  (1) +2                EE 06 03
       INC  (1) +7                EE 0B 03
       DEX                        CA
     2 CPX  #$00                  E0 00
       BNE   1                    D0 EA
       CPY  #$A0                  C0 A0
       BCC   1                    90 E6
       RTS                        60     ( 31 Octets )

     ( Programme 3 )

     Ou pour ceux qui n'aiment pas les programmes s'automodifiant

       LDX  #$01             300: A2 01
       LDY  #$00                  A0 00
       STY  $3C                   84 3C
       LDA  #$08                  A9 08
       STA  $3D                   85 3D
     1 LDA  ($3C),Y               B1 3C
       EOR  #$A5                  49 A5
       STA  ($3C),Y               91 3C
       INY                        C8
       BNE   2                    D0 03
       DEX                        CA
       INC  $3D                   E6 3D
     2 CPX  #$00                  E0 00
       BNE   1                    D0 F0
       CPY  #$A0                  C0 A0
       BCC   1                    90 EC
       RTS                        60     ( 31 Octets )

     ( Programme 4 )


     "Moyen de lutte": ( 1 )
     Tous les codages par substitution à opérateur unique se
     résument donc soit à un EOR #$xx ,soit à un ADC #$xx.
     ( Soit en tout 512 possibilitées )

     On remarque de plus que EOR et ADC ont chacun un opérateur
     inverse: EOR et SBC. Grace à cette propriété, il est aisé
     de rechercher au milieu d'une masse de donnée un message
     connu ,cripté par un codage à opérateur unique.

     Soit Adr 1 l'adresse du tampon contenant le message connu et
     recherché. Soit Adr 2 l'adresse du tampon contenant le
     message dont on désire savoir s'il correspond au message
     recherché mais codé par un EOR ou un ADC.

     Supposons que MESSAGE 2 = MESSAGE 1  EOR code
     On a alors la série d'égalités:

        ( Adr 1 )    EOR  code = ( Adr 2 )
        ( Adr 1 +1 ) EOR  code = ( Adr 2 +1 )
        ............ ...  .... . ............
        ( Adr 1 +L ) EOR  code = ( Adr 2 +L )

     L représentant la longueur des messages - 1.
     Ce qui d'après la propriété de l'opérateur inverse s'écrit:

        ( Adr 1 )    EOR  ( Adr 2 )    = code
        .........    ...  .........    . ....
        ( Adr 1 +L ) EOR  ( Adr 2 +L ) = code

     De meme pour MESSAGE 2 = MESSAGE 1  ADC code, on peut
     établir les égalités:

        ( Adr 1 )    ADC  code = ( Adr 2 )
        ( Adr 1 +1 ) ADC  code = ( Adr 2 +1 )
        ............ ...  .... . ............
        ( Adr 1 +L ) ADC  code = ( Adr 2 +L )

     Et par l'opérateur inverse:

        ( Adr 1 )    SBC  ( Adr 2 )    = code
        .........    ...  .........    . ....
        ( Adr 1 +L ) SBC  ( Adr 2 +L ) = code

     NB: Les opérateurs de calcul considérés sont évidemment
         L'addition et la soustraction sans retenue ( le cas
         sera traité plus loin ) :
         CLC  ADC #$xx   et  SEC  SBC #$xx

     Il suffit donc de calculer  CODE  dans la premiére égalité
     utilisant l'opérateur inverse, puis de vérifier si la
     valeur trouvée convient dans les autres. Si oui, le message
     Adr 2 est égale au message Adr 1  EOR ( ou ADC ) la valeur
     de code. En déplacant Adr 2 dans toute la masse de données
     on trouvera fatalement le message codé s'il existe.

     On peut organiser la recherche selon l'organigramme suivant:

                ENTREE PRINCIPALE
     ( Adr 2 <- début de la masse de donnée )
     ( Adr 1 <- début du tampon contenant   )
     (          le message recherché        )      ( FIN )
                  !                                   A
                  V          non                      !
             ( Y <- 0 ) <---------- ** Adr 2 = Fin des données **
                  !                                   A
                  V                                   !
        ( Code <- 'Adr 2 +Y' )             ( Adr 2 <- Adr 2 + 1 )
        ( EOR  'Adr 1 +Y'    )                                 A
                  !                                            !
                  V                 oui                        !
           ( Y <- Y + 1 ) <-----------------=                  !
                  !                         !                  !
                  V           non   ** Code = 'Adr 2 +Y' **    !
         **  Y = longueur ** -----> ** EOR  'ADR 1 +Y'   **    !
                  !                         !                  !
                  !oui                      !                  !
                  V                         !non               !
     ( Message trouvé en Adr 2 )            !                  !
     ( Selon le code EOR Code  )            !                  !
                                            V                  !
     ( Message trouvé en Adr 2 )        ( Y <- 0 )             !
     ( Selon le code ADC Code  )            !                  !
      A                                     V                  !
      !                          ( Code <- 'Adr 2 +Y' )        !
      !           =------------- ( SBC  'Adr 1 +Y'    )        !
      !oui        !                                            !
      !           V                 oui                        !
      !    ( Y <- Y + 1 ) <-----------------=                  A
      !           !                         !                  !
      !           V           non   ** Code = 'Adr 2 +Y' ** non!
      =- **  Y = longueur ** -----> ** SBC  'ADR 1 +Y'   ** ---=
                                                               !
                                                               !
                              ( Reprise de la recherche ) -----=
                        ENTREE DE POURSUITE DE LA RECHERCHE

     Que l'on peut transcrire sous la forme d'un programme de ce
     genre:

     On posera au préalable:
       - Adr 1 en $08 - $09
       - Adr 2 en $0A - $0B
       - Code en $0C
       - Pointeur de la fin des données en $0D - $0E
       - Longueur (nb d'octets) du message à rechercher en $0F
       - Message à rechercher à partir de l'adresse pointée par
         $08-$09
     L'initialisation de ces paramètres n'est pas incluse dans le
     programme suivant :
                           Ce qui donne assemblé en $300

     1 LDY  #$00                           300: A0 00
       LDA  ($0A),Y                             B1 0A
       EOR  ($08),Y                             51 08
       STA  $0C                                 85 0C
     2 INY                                      C8
       CPY  $0F                                 C4 0F
       BEQ   6                                  F0 32
       LDA  ($0A),Y                             B1 0A
       EOR  ($08),Y                             51 08
       CMP  $0C                            311: C5 0C
       BEQ   2                                  F0 F3
       LDY  #$00                                A0 00
       LDA  ($0A),Y                             B1 0A
       SEC                                      38
       SBC  ($08),Y                             F1 08
       STA  $0C                                 85 0C
     3 INY                                      C8
       CPY  $0F                                 C4 0F
       BEQ   7                             321: F0 20
       LDA  ($0A),Y                             B1 0A
       SEC                                      38
       SBC  ($08),Y                             F1 08
       CMP  $0C                                 C5 0C
       BEQ   3                                  F0 F2
     4 INC  $0A                                 E6 0A
       BNE   5                                  D0 02
       INC  $0B                            330: E6 0B
     5 LDA  $0B                                 A5 0B
       CMP  $0E                                 C5 0E
       BCC   1                                  90 C8
       LDA  $0A                                 A5 0A
       CMP  $0D                                 C5 0D
       BCC   1                                  90 C2
       RTS                                      60
     6 LDA  #$C5     )                          A9 C5
       BNE   8       ) Cette partie        341: D0 02
     7 LDA  #$C1     ) affiche "E"              A9 C1
     8 JSR  $FBFD    ) ou "A" pour              20 FD FB
       LDA  $0C      ) la nature du             A5 0C
       JSR  $FDDA    ) code, puis le            20 DA FD
       LDA  #$A0     ) paramètre,               A9 A0
       JSR  $FBFD    ) puis l'adresse           20 FD FB
       LDA  $0B      ) de la               352: A5 0B
       JSR  $FDDA    ) formule                  20 DA FD
       LDA  $0A      ) trouvée                  A5 0A
       JSR  $FDDA    ) ( Adr 2 ).               20 DA FD
       LDA  #$A0     )                          A9 A0
       JSR  $FBFD    )                          20 FD FB
       CLC           )                          18
       BCC   4       )                     35D: 90 C8

     ( Programme 5 )

     Ce programme peut sembler intéressant à certains, du moins
     je l'espère, mais dans la pluspart des cas, il sera vous
     inutile...

     "A propos d'Anstrom": ( HN )

     Grace à son système de recherche performant et son éditeur
     de code multiple à subtitution  EOR - ADC - ROTATION ,
     Anstrom était déja un des bons utilitaires de recherche
     et de codage. Avec le Super Scanner de la version 2.3 ,il
     est probablement devenu l'un des plus complets et des plus puissants.
     Mais laissons l'étude de son potentiel élévé à plus tard ,
     et intéressons-nous à la recherche-décodage des codes par
     substitution à opérateur unique ,au niveau de l'utilisation
     pratique:

     1 - Charger le Super Scanner en utilisant le menu opplus.
     2 - Sélectionner opplus actif.
     3 - Sélectionner "Recherche" dans le menu Disk.
     4 - Sélectionner la nature du message recherché:
         - Texte    - Héxadéximal    - Bits séparés
     5 - Sélectionner le mode de recherche décodage.
     6 - Sélectionner le Champ De Recherche ( CDR ):
         - les 35 pistes: Toute la disquette.
         - Suite: Tout le reste de la disquette à partir de celui
           pointé par Piste/Secteur.
         - Cdt: Sur une suite définie de secteurs, par exemple un
           fichier ( Il est d'abord nécessaire de définir le
           fichier en question par:
           1 - "Indication-création" dans cdt.
           2 - "Effacement".
           3 - "Cumul" ( Si besoin ).
           4 - "Certains fichiers".
           5 - Cliquer sur le ou les fichiers désirés
           6 - "Recherche" pour revenir au Super Scanner )
     7 - Sélectionner le mode de renvoi:
         - Ecran: pour avoir directement le résultat en édition
         - Cdt ou Cdt opposé: pour établir dans le cdt la liste
           des secteurs contenant le message codé.
         - Mixte: Les deux précédents en meme temps.
     8 - Cliquer dans le bas de l'écran pour définir le message
         recherché.
     9 - Cliquer sur RECHERCHE pour débuter la recherche.
     10- Utiliser éventuellement:
         - Cont.Rech: pour reprendre la recherche.
         - Décodage: pour décoder selon le multicode à opérateur
           unique affiché.
         - Recodage: pour recoder ...

     NB:Pour plus de détails consulter la notice du Super Scanner
        Il est préférable d'utiliser le Super Scanner plutot que
        le système de base car celui-ci, contrairement au Super
        Scanner ,n'inclue pas dans le mode décodage le codage ADC
        mais se contente du EOR.

     Mais attention, si ceci permet de chercher, décoder, recoder
     et modifier certains messages, n'oubliez pas que ceux-ci
     peuvent etre protégés par des vérificateurs qu'il faudrait
     aussi neutraliser ou de préférence adapter. Méfiez-vous
     aussi des messages bidons...
     Une étude de la lutte contre les vérificateurs et les
     messages bidons fera probablement partie des annexes du
     livre quatre.

     "Application pratique": ( 0 )
     Je rappelle la table des opérateurs inverses qui permet de
     transformer un codeur en décodeur et vice-versa: ( la table
     se lit dans les deux sens )

        opérateur       ! opérateur inverse
     -------------------!-------------------
         CLC ADC #$xx   !   SEC SBC #$xx
         SEC ADC #$xx   !   CLC SBC #$xx
         EOR #$xx       !   EOR #$xx
         INC            !   DEC
     -------------------!-------------------
      opérateur inverse !    opérateur

     NB: Je tient à préciser à ceux qui m'accuserait avec anstrom
         de m'etre tourner vers le NAME-KILLERING alors que je me
         prétends opposé à ce procédé, que NAME-KILLERING n'est
         pas modifier des noms ou des mentions protégés et
         justifiés, mais réside dans le fait d'oser disffuser de
         tels faux dans le but de s'accaparer le mérite des
         autres. La recherche-modification personnelle à elle
         seule n'est nullement répréhensible à mon avis est peut
         constituer une étape importante pour devenir un bon
         bidouilleur informatique.


     B - Les codages à rotation:

     "Qu'est ce?": ( 0 )
     L'unité de stockage de données en mémoire est l'octet ( = 8
     bits ). Les codages à rotation reposent sur une modification
     de l'ordre de ces 8 bits dans chaque octet.
     Appelons ces 8 bits B0 à B7.
     Leur ordre normal est :  B7 B6 B5 B4 B3 B2 B1 B0
     Ainsi un codage à rotation peut transformer les octets par
     exemple de cette manière:
      B7 B6 B5 B4 B3 B2 B1 B0  -->  B1 B0 B7 B6 B5 B4 B3 B2
     pour  $A5           on obtient  $69
      1  0  1  0  0  1  0  1   -->  0  1  1  0  1  0  0  1

     On distingue 2 sous-catégories de codages à rotation:
     - les rotations pures qui effectuent une véritable rotation
       des bits , comme dans l'exemple précédent.
     - les brasseurs de bits qui modifient n'importe comment l'
       ordre des bits ( à l'exception donc de l'équivalent des
       rotations pures ) comme par exemple:

     B7 B6 B5 B4 B3 B2 B1 B0  -->  B6 B4 B0 B7 B1 B2 B5 B3

     ( SUITE DANS LE FICHIER CDC2 )


Retour sommaire

hr DEPME

Face 2 : CODAGE PART 3.


     Le code-décode, créé par 'EL MATHOS', le 13/11/87

     1 - Les rotations pures par octet:

     "Application pratique" ( 1 )

     Nous allons réutiliser l'organigramme des codages à
     opérateur unique ,en remplaçant l'opérateur par un systéme
     de rotation 8 bits.
     Il n'existe que 2 rotations de base sur 8 bits:
     - 1 vers la gauche      7 <- 6 <- 5 <- 4 <- 3 <- 2 <- 1 <- 0
                             !                                  A
                             !__________________________________!

     - 1 vers la droite      7 -> 6 -> 5 -> 4 -> 3 -> 2 -> 1 -> 0
                             A                                  !
                             !__________________________________!

     Pour obtenir d'autres rotations ,on répètera plusieurs fois
     l'une des rotations de base. Ce nombre de fois sera le
     paramètre. Par convention le paramètre sera le nombre de
     rotation équivalente dans le sens rotation droite.

     ex: 2 ROT droite a pour paramètre  2
         5 ROT gauche a pour paramètre  3  ( = 8 - 5 )
        17 ROT droite a pour paramètre  1  ( = 17 - 8 - 8 )
         1 ROT gauche a pour paramètre  7  ( = 8 - 1 )

     En effet on constate que : ROT gauche (x) = ROT droite (8-x)
                                ROT droite (x) = ROT droite (8+x)
                                               = ROT droite (8-x)

     Ainsi toutes les rotations pourront s'exprimer selon un
     paramètre de rotation droite compris entre 0 et 7.
     Et ainsi l'opérateur inverse de ROT (x) = ROT (8-x)
     ( par défaut ROT signifiera ROT droite )
     Mais on peut aussi considérer ROT gauche (x) comme l'
     opérateur inverse de ROT droite (x).

     L'opérateur langage machine utilisé pour ROT droite est:
      PHA  LSR  PLA  ROR    soit   48 4A 68 6A
     L'opérateur langage machine utilisé pour ROT gauche est:
      PHA  ASL  PLA  ROL    soit   48 0A 68 2A

     "Exemple" ( 1 )
     Tiré directement de l'organigramme du codage à opérateur
     unique avec la modification annoncée:
     - le paramètre ( 1 à 7 ) stocké en $FF
     - Adr 1 et Adr 2 comme précédemment en $3C à $3F au meme
       valeur ( $800 et $9A0 ).

     Soit:           Qui donne assemblé en $300

       LDA  #$00             300 : A9 00
       STA  $3C                    85 3C
       LDA  #$08                   A9 08
       STA  $3D                    85 3D
       LDA  #$A0                   A9 A0
       STA  $3E                    85 3E
       LDA  #$09                   A9 09
       STA  $3F                    85 3F
       LDY  #$00                   A0 00
     1 LDX  $FF                    A6 FF
       LDA  ($3C),Y                B1 3C
     2 PHA                         48
       LSR                         4A
       PLA                         68
       ROR                         6A
       DEX                         CA
       BNE   2                     D0 F9
       STA  ($3C),Y                91 3C
       INC  $3C                    E6 3C
       BNE   3                     D0 02
       INC  $3D                    E6 3D
     3 LDA  $3D                    A5 3D
       CMP  $3F                    C5 3F
       BCC   1                     90 E7
       LDA  $3C                    A5 3C
       CMP  $3E                    C5 3E
       BCC   1                     90 E1
       RTS                         60     ( 50 Octets )

     ( Programme 6 )

     Les modifications proposées pour le codeur à opérateur
     unique sont aussi valables pour ce programme.

     "Moyens de lutte:" ( 1 )
     Il suffira de réutiliser l'organigramme du scanner décodeur
     EOR-ADC en supprimant la seconde partie ( recherche ADC ) et
     en modifiant la premiére pour l'adapter aux rotations.
     Mais je signale que les rotations pures étant peu utilisées,
     il est plus simple de se contenter du système de recherche
     général de codage par substitution, le système analogique.
     ( voir plus loin )
     Je donne néanmoins pour les amateurs l'organigramme et le
     listing complet:

                ENTREE PRINCIPALE
     ( Adr 2 <- début de la masse de donnée )
     ( Adr 1 <- début du tampon contenant   )
     (          le message recherché        )      ( FIN )
                  !                                   A
                  V          non                      !
             ( Y <- 0 ) <---------- ** Adr 2 = Fin des données **
             ( X <- 1 )                               A
                  !                                   !
                  V                   =-> ( Adr 2 <- Adr 2 + 1 )
        ( A <- 'Adr 2 +Y' )           !                        A
                  !                   !oui                     !
                  V          non      !                        !
         ( ROT gauche 1 ) <------- ** X = 8 **                 !
                  !                     A                      !
                  V           non       !                      !
         ** A = 'Adr 1 +Y' ** ---> ( X <- X + 1 )              !
               oui!                                            !
                  V                                            !
            ( Code <- X )                                      !
                  !                                            A
                  V                  oui                       !
           ( Y <- Y + 1 ) <-----------------=                  !
                  !                         !               non!
                  V           non   **   'Adr 2 +Y '     **    !
         **  Y = longueur ** -----> ** ROT gauche  code  **----=
                  !                 **  = 'Adr 1 +Y'     **    !
                  !oui                                         A
                  V                                            !
     ( Message trouvé en Adr 2 )           ENTREE DE           !
     ( Selon le code ROT Code  )  ( Reprise de la recherche ) -=

     Que l'on peut transcrire sous la forme d'un programme de ce
     genre:

     On posera au préalable:
       - Adr 1 en $08 - $09
       - Adr 2 en $0A - $0B
       - Code en $0C
       - Fin des données en $0D - $0E
       - Longueur du message en $0F
       - Message à rechercher dans le tampon pointé par $08-$09
     L'initialisation de ces paramètres n'est pas incluse dans le
     programme suivant :
                           Ce qui donne assemblé en $300

     1 LDY  #$00                           300: A0 00
       LDX  #$01                                A2 01
       LDA  ($0A),Y                             B1 0A
     2 PHA                                      48
       ASL                                      0A
       PLA                                      68
       ROL                                      2A
       CMP  ($08),Y                             D1 08
       BEQ   3                                  F0 07
       INX                                      E8
       CPX  #$09                                E0 09
       BNE   2                             311: D0 F3
       BEQ   6                                  F0 16
     3 STX  $0C                                 86 0C
     4 INY                                      C8
       CPY  $0F                                 C4 0F
       BEQ   8                                  F0 22
       LDA  ($0A),Y                             B1 0A
       LDX  $0C                                 A6 0C
     5 PHA                                 320: 48
       ASL                                      0A
       PLA                                      68
       ROL                                      2A
       DEX                                      CA
       BNE   5                                  D0 F9
       CMP  ($08),Y                             D1 08
       BEQ   4                                  F0 EC
     6 INC  $0A                                 E6 0A
       BNE   7                                  D0 02
       INC  $0B                                 E6 0B
     7 LDA  $0B                            331: A5 0B
       CMP  $0E                                 C5 0E
       BCC   1                                  90 C9
       LDA  $0A                                 A5 0A
       CMP  $0D                                 C5 0D
       BCC   1                                  90 C3
       RTS                                      60
     8 LDA  #$D2     ) Affiche                  A9 D2
       JSR  $FBFD    ) "R" pour            340: 20 FD FB
       LDA  $0C      ) la nature du             A5 0C
       AND  #$07     )                          29 07
       JSR  $FDDA    ) code, puis le            20 DA FD
       LDA  #$A0     ) paramètre,               A9 A0
       JSR  $FBFD    ) puis l'adresse           20 FD FB
       LDA  $0B      ) de la                    A5 0B
       JSR  $FDDA    ) formule                  20 DA FD
       LDA  $0A      ) trouvée             352: A5 0A
       JSR  $FDDA    ) ( Adr 2 ).               20 DA FD
       LDA  #$A0     )                          A9 A0
       JSR  $FBFD    )                          20 FD FB
       CLC           )                          18
       BCC   6       )                          90 CA

     ( Programme 7 )

     2 - Les brasseurs de bits sur octet:

     "Application pratique" ( 1 )

     Le brassage sur octet consiste à mélanger les 8 bits d'un
     octet d'une manière irrégulière.
     Procéder par rotation serait délicat et limiterait les
     combinaisons possibles. Nous allons donc utiliser un système
     apparament plus complexe mais en réalité plus simple et plus
     efficace , en utilisant 2 tables de 8 octets chacunes.
     La  première, la table A contiendra 8 octets témoins des 8
     bits différents existants. Ainsi:

       Table A :   0   $01  0 0 0 0 0 0 0 1
                   1   $02  0 0 0 0 0 0 1 0
                   2   $04  0 0 0 0 0 1 0 0
                   3   $08  0 0 0 0 1 0 0 0
                   4   $10  0 0 0 1 0 0 0 0
                   5   $20  0 0 1 0 0 0 0 0
                   6   $40  0 1 0 0 0 0 0 0
                   7   $80  1 0 0 0 0 0 0 0

     La seconde , la table B , contiendra 8 octets témoins des 8
     bits de substitution , caractéristiques du brassage.
     Ainsi pour le codage:

       B7 B6 B5 B4 B3 B2 B1 B0 ---> B2 B5 B7 B4 B0 B6 B3 B1

       Table B :   0   $08  0 0 0 0 1 0 0 0
                   1   $01  0 0 0 0 0 0 0 1
                   2   $80  1 0 0 0 0 0 0 0
                   3   $02  0 0 0 0 0 0 1 0
                   4   $10  0 0 0 1 0 0 0 0
                   5   $40  0 1 0 0 0 0 0 0
                   6   $04  0 0 0 0 0 1 0 0
                   7   $20  0 0 1 0 0 0 0 0

     Il suffit ensuite , grace à la table A de tester chacun des
     8 bits de l'octet à coder. Puis l'octet résultat , d'abord à
     $00 , voit mis à 1 les bits de substitution des bits de l'
     octet à coder qui étaient à 1.
     Soit l'organigramme suivant :

     ENTREE PRINCIPALE : OCTET A CODER
     ( octet résultat <-- $00 )
                   !           SORTIE FINALE : OCTET CODE
                   V            ( octer résultat pret )
              ( X <-- 0 )              A
                   !                   !oui
                   V           non     !
     ( A  <-- octet à coder ) <--- ** X = 8 **
                 !                     !
                 V                     !
     (   A <-- A  AND  )       ( X <-- X + 1 ) <----=
     (  'Table A' , X  )             A              !
                 !                   !              !
                 V            oui    !              !
           **  A = 0  ** ------------=              !
                 !non                               !
                 V                                  !
     ( octet résultat <-- octet résultat ORA 'Table B' , X )

     Et il suffit d'inclure ceci dans la traditionnele boucle de codage (
     ou de décodage ).
     Le décodage s'obtient facilement en inversant les tables A
     et B.

     "Exemple" ( 1 )

     Tiré directement de l'organigramme précédent. Et cette fois
     je ne vous macherai pas tout le travail car je ne donnerai
     pas de listing entier.
     Posons : A contient l'octet à coder à l'entrée
              B contient l'octet codé à la sortie
              $40 stocke l'octet à coder
              $41 stocke l'octet codé
           Table A en $360 - $367
           Table B en $368 - $36F

     On obtient:     Assemblé en $314 on obtient
       STA  $40              314: 85 40
       LDX  #$00                  A2 00
       STX  $41                   86 41
     1 LDA  $40                   A5 40
       AND  $0360,X               3D 60 03
       BEQ   2                    F0 07
       LDA  $41                   A5 41
       ORA  $0368,X               1D 68 03
       STA  $41                   85 41
     2 INX                        E8
       CPX  #$08                  E0 08
       BNE   1                    D0 ED
       LDA  $41                   A5 41

     ( Programme 8 )

     Je vous laisse le soin d'adapter la boucle sur ce programme,
     avec toutes les modifications que vous voudrez.( Au boulot!)

     "Moyen de lutte" ( HN )

     Plus encore que pour le précédent codage , il est de très
     loin préférable de se fier au système analogique.
     Je ne proposerai pas de système de recherche spécial pour
     le brassage de bits, car son efficacité et sa rapidité ne
     pourront meme pas concurencer de loin les performance du
     système analogique, ce qui était par contre le cas avec
     le scanner spécial rotations pures.

     C - Les codages à transcription

     "Qu'est ce?": ( HN )

     Le principe des codages à transcription est très simple:
     remplacer un octet par un autre en utilisant une table de
     traduction fixé une fois pour toute.
     La table est établie sans la moindre logique , à l'exception
     du fait obligatoire suivant:
     Une meme valeur de traduction ne doit pas se répéter plus d'
     une fois dans la table. ( ce qui correspond mathématiquement
     au fait que l'application de codage doit etre bijective.)
     Sinon le décodage devient impossible... ( Si un octet a 2
     antécédents , comment retrouver le bon ? )

     "Application pratique" ( 0 )

     Je vais étudier un transcripteur d'octet à 8 bits
     significatifs ( pouvant coder des octets de 0 à 255 ).
     Le décodage s'effectuera grace à la table inverse de la
     table de codage, établie grace à un inverseur de table
     ( ce qui peut paraitre relativement logique ).

     Le codeur-décodeur: un organigramme très simple

     ENTREE PRINCIPALE
     ( Adr 1 <-- adresse de début 'inclue' )
     ( Adr 2 <-- adresse de fin 'exclue'   )
                !
                V
           ( Y <-- 0 ) <-------------------=
                !                          !
                V                          !
     ( X <-- 'Adr 1 ,Y' )                  !
                !                          !
                V                          !
     ( A <-- 'TABLE' ,X )                  !
                !                          !
                V                          !
     ( 'Adr 1 ,Y' <-- A )                  !
                !                          !oui
                V                          !         non
     ( Adr 1 <-- Adr 1 + 1 ) --> ** Adr 1 < Adr 2 ** ----> FIN

     L'inverseur de code: Encore plus simple:

     ENTREE PRINCIPALE
     ( Y <-- 0 )
          !
          V
     ( X <-- 'TABLE 1',Y ) <----- ( Y <-- Y + 1 )
          !                              A
          V                           non!        oui
     ( 'TABLE 2',X <-- Y ) ------> ** Y = 255 ** -----> FIN

     Et l'on constate bien que si table 1 contient 2 fois la meme valeur ,
     le programme écrira par 2 fois sur le meme octet de
     la table 2, et cette table inversée sera donc inutilisable.

     "Exemple" ( 0 )

     Tout d'abord le codeur-décodeur:
     Tiré directement de l'organigramme précédent et sous sa
     forme complète en posant:
       Adr 1 stockée en $3C-$3D = $0800
       Adr 2 stockée en $3E-$3F = $09A0
       Table en $1000-$1100

     Soit                     ce qui donne assemblé en $300:

       LDA  #$00                $300: A9 00
       STA  $3C                       85 3C
       LDA  #$08                      A9 08
       STA  $3D                       85 3D
       LDA  #$A0                      A9 A0
       STA  $3E                       85 3E
       LDA  #$09                      A9 09
       STA  $3F                       85 3F
     1 LDY  #$00                $310: A0 00
       LDA  ($3C),Y                   B1 3C
       TAX                            AA
       LDA  $1000,Y                   BD 00 10
       STA  ($3C),Y                   91 3C
       INC  $3C                       E6 3C
       BNE   2                        D0 02
       INC  $3D                       E6 3D
     2 LDA  $3D                 $320: A5 3D
       CMP  $3F                       C5 3F
       BCC   1                        90 EA
       LDA  $3C                       A5 3C
       CMP  $3E                       C5 3E
       BCC   1                        90 E4
       RTS                            60

     ( Programme 9 )

     Avec comme d'habitude toutes les modifs pensables ou
     souhaitables selon votre convenance.
     Quant à l'inverseur de table , selon l'organigramme annoncé
     avec quelques simplifications , en insérant les adresses des
     2 tables directement dans le programme:
     En posant TABLE 1 en $1000-$10FF
               TABLE 2 en $1100-$11FF

     Soit                   Qui assemblé en $300 donne:

       LDY  #$00                  $300: A0 00
     1 LDA  (TABLE 1),Y                 B9 00 10
       TAX                              AA
       TYA                              98
       STA  (TABLE 2),X                 9D 00 11
       INY                              C8
       BNE  1                           D0 F5
       RTS                              60

     ( Programme 10 )

     "Exemple" ( HN )

     Pour ceux qui diraient que ce système de codage est trop
     lourd à cause de la table qu'il nécessite et qu'il est donc
     très peu utilisé , je signale que c'est pourtant parmi les
     coadages simples l'un des plus utilisé. En effet le stockage
     des données sur disquette nécessite entre autre l'utilisa-
     tion de ce système de codage. Je reparlerai plus tard
     avec beaucoup de détails de ces problèmes de précodage des
     données ( voir le livre 2 ) non seulement pour les formats
     standarts mais aussi pour les formats spéciaux ( et très
     spéciaux ).

     "Moyen de lutte" ( HN )

     Dans les codages à substitution, il existe:
     - 512 codes à opérateur unique, soit EOR, soit ADC mais qui
       se déduisent très facilement et dont le décodage ne
       nécessite que 2 tests.
     - 7 codes à rotation pure, plus complexes et qui nécessite
       7 tests différents pour leur recherche.
     - 40320 codes à brassage de bits, eux aussi complexes et qui
       nécessiteraient 40320 tests différents pour leur recherche
       ( Se qui sur 1K de données prendrait quelques dizaines de
       minutes ... ce qui explique pourquoi je ne m'y suis pas
       intéressé en détails ).
     - Mais ceci n'est rien qu'une mini-goutte d'eau dans une mer
       démesurée , puisqu'il existe environ 8.578 * 10 exp. 506
       codes à transcription, soit bien plus que le nombre de
       particules élémentaires que peut contenir l'univers tel
       qu'on le suppose ( environ 10 exp. 130 particules ) s'il
       était entiérement rempli de matière à la densité des trous
       noirs. Il va sans dire qu'aucun programme ne peut tous les
       essayer !!!!! ( d'autant que sur un petit message
       recherché, un nombre immense de ces codes fonctionneraient
       encore, et lequel serait vraiment le bon ?
       Cette question est d'ailleurs impossible à résoudre avec
       certitude, sauf en trouvant la routine de codage ou de
       décodage.
     Mais il existe heureusement un moyen plus rapide pour
     repérer un message cripté par un système de codage à
     substitution ( que l'on peut aussi appeler systéme de codage
     à transcription ): Le système de recherche analogique.
     ( Depuis le temps que je l'annoncais .... Pas trop tot. )

     Bon alors ce système analogique comment ça fonctionne ?
     Très simple... ( comme tout ce que vous trouverez dans ce
     premier chapitre d'ailleurs ) Il réside sur le fait qu'un
     meme octet et toujours remplacer par une meme valeur. Il
     est difficile hélas d'utiliser cette propriété si le message
     codé est trés court ou s'il ne comporte pas de caractéres
     identiques. Mais sur un message du genre:
     " RETURN TO CONTINUE " c'est un vrai rève:
     4 fois "espace" , 3 fois "T" , 3 fois "N" , 2 fois "R" , 2
     fois "E" , 2 fois "U" , 2 fois "O" , 1 fois "C" et "I".

     Croyez-vous qu'il existe beaucoup de séquences contenant 9
     caractéres différents , se répétant le nombre de fois
     voulues , au positions voulues ?
     Evidemment non !!!
     Mais je rappelle que si ce système repère assez fiablement
     un message codé, il ne peut pas indiquer quel est le système
     de codage utilisé. Il faut alors le chercher par d'autres moyens
     éventuellement beaucoup plus lents mais, qui n'ayant
     plus à chercher dans une très vaste zone mais sur un seul
     message, peuvent résoudre néanmoins assez rapidement le
     problème, ce qu'ils ne pourraient pas faire si la zone à
     fouiller était trop vaste. C'est le systéme qui est utilisé
     sur le système analogique d'anstrom, couplé avec un multi-
     décodeur assez puissant, mais très lent.

     Si le principe est simple, attention l'application est bien
     plus délicate.
     Si vous ne voulez pas vous cassez les pieds , sautez tout de suite à
     "A propos d'anstrom". Sinon, changez le ruban de
     votre imprimante, buvez 1 ou 2 cafés et lisez la suite...

     ( SUITE DANS LE FICHIER CDC3 )


Retour sommaire

hr DEPME

Face 2 : CODAGE PART 4.


     Le code-décode, créé par 'El Mathos', le 13/11/1987.

     "Moyens de lutte" ( 2 )

     Pour obtenir un rendement optimal lors de la recherche du
     message, il est nécessaire de précoder ce message. Pour cela
     on isole à l'avance les caractères de meme valeur, et on
     sépare ceux dont les valeurs doivent etre différentes,
     puisque c'est sur ces 2 principes que repose la recherche
     analogique.
     Le but du précodage est donc de transformer le message à
     rechercher en données significatives des propriétés
     précédentes, pouvant etre rapidement utilisées par le
     systéme de recherche.
     Pour cela le message à rechercher va etre éplucher octet par
     octet. La position relative des séries d'octets identiques
     par rapport au début du message va etre stockée dans une
     table linéaire. Une série de positions relatives pointant
     un ou plusieurs octets de meme valeur, cette série étant
     appelé un champ, sera séparée de la précédente et de la
     suivante par un valeur particuliére, appelé pointeur de fin
     de champ. Deux pointeurs de fin de champ consécutifs
     signaleront la fin des données précodés.

     Concrètement, pour le message "A RECHERCHER" , cela donnera:

       00 FF 01 FF 02 07 0B FF 03 06 0A FF 04 08 FF 05 09 FF FF
       !  !  !        !           !          !       !      !
       A  B  C        D           E          F       G      H

     Notes:
     A:position relative des caractéres "A" dans le message:
       un A en position 00 : début du message.
       Cet octet, à lui seul, constitue un champ.
     B:pointeur de fin de champ: valeur FF
     C:position relative des espaces dans le message.
     D:positions relatives des caractéres "R" dans le message:
       trois "R" en position 2, 7 et 11 en numérotant les
       caractéres de gauche à droite, en commencant par la
       valeur zéro pour le premier carctére.
       Ces trois octets constituent un champ.
     E:F:G:positions relatives des caractères "E", "C" et "H"
     H:Double FF, pointeur de fin des données précodées.

     Pour procéder à cet opération, je vais utiliser un certain
     nombre de pointeurs et de tables:
     Les tables:
        - MESSAGE qui contient les octets du message à rechercher
          L'adresse MESSAGE correspond donc à l'adresse du
          premier octet du message.
        - UTILISE qui contient un indicateur des indicateurs d'
          utilisation, en paralléle à chacun des octets de la
          table MESSAGE.
          L'indicateur est à 0 si l'octet correspondant de la
          table MESSAGE n'a pas été encore précodé, et à 1 dans
          le cas contraire.
        - RESULTAT qui contient les données précodées.
     Les pointeurs:
        - PTRAIT, le pointeur de traitement qui repère l'octet
          du message en cours de traitement, cet octet servant de
          référence pour la création d'un champ: sont placés dans
          le prochain champ les positions relatives de tous les
          octet de meme valeur que cet octet ( lui y compris ).
        - VALEUR contient la valeur de cet octet pour faciliter
          la recherche des octets de meme valeur.
        - LONGUEUR, qui indique la longueur du message à chercher
          ( nombre d'octet )
        - PRESULTAT, qui pointe en position dans RESULTAT le
          prochain octet à utilisé ( 0 correspond au 1er octet de
          de la table RESULTAT )
     La table RESULTAT représente les seuls données à conserver
     pour utiliser le système de recherche lui-meme.

     Pour mieux expliquer le principe du précodeur, j'utilise
     comme d'habitude un organigramme:

           ( Y <-- 0 )
                !
                V               non
     ( 'UTILISE' ,Y <-- 0 ) <----------=
                !                      !
                V                      !
          ( Y <-- Y+1 ) ----> ** Y = LONGUEUR **
                                       !
                                       !oui
     (   fin du précodage.   )         V
     (    X <-- PRESULTAT    )    ( PRESULTAT <-- 0 )
     ( 'RESULTAT' ,X <-- $FF )    (  PTRAIT   <-- 0 )
          A                            !
          !oui                         !
          !                   non      V
     ** PTRAIT = LONGUEUR ** ----> ( Y <-- PTRAIT )
          A                             !
          !                   non       V
     ( PTRAIT <-- PTRAIT+1 ) <---- ** 'UTILISE' ,Y = 0 **
          A                             !
          !                =------------= oui
          !                !
          !                V       =--------------------------=
          !     (  VALEUR <--  )   !   ( X <-- PRESULTAT )    !
          !     ( 'MESSAGE' ,Y )   !             V            !
          !             !          ! ( 'RESULTAT' ,X <-- Y )  !
          !             V          !             V            !
          !          ( JSR ) <---->!    ( PRESULTAT <-- )     !
          !             !          !    (  PRESULTAT+1  )     !
          !             V          !             V            !
          !        ( Y <-- Y+1 )   ! ( 'UTILISE' ,Y <-- 1 )   !
          !             !    A     !                          !
          !             !    !     =--------=   RTS  =--------=
          !             !    !              =--------=      A
          !             !    !                              !
          !             !    !                              V
          !             !    =------------=------------- ( JSR )
          !             V                 A non             A
          !   ** Y = LONGUEUR ** ---> **   VALEUR =   ** ---=
          !         oui !        non  ** 'MESSAGE' ,Y **  oui
          !             V
     (      X <-- PRESULTAT      )
     (   'RESULTAT' ,X <-- $FF   )
     ( PRESULTAT <-- PRESULTAT+1 )

     Comme d'habitude, voici un exemple assemblé tiré de l'orga-
     nigramme précédent.
     On pose au préalable:
     3 pointeurs doubles contenant l'adresse de début de chacune
     des 3 tables utilisées:
       - MESSAGE en $18, $19     ( exemple : $900 )
       - UTILISE en $1A, $1B     ( exemple : $940 )
       - RESULTAT en $1C, $1D    ( exemple : $980 )
     Le contenu de ces 6 adresses doit etre fixé par l'
     utilisateur.
     ( D'après les valeurs choisies dans l'exemple, la longueur
     du message ne peut pas dépassé $40, soit 64 octets.)
     Les 4 pointeurs simples de l'organigramme :
       - PTRAIT en $06
       - VALEUR en $07
       - LONGUEUR en $08     ( à fixé par l'utilisateur )
       - PRESULTAT en $09

     On obtient donc:                 Assemblé en $300:

       LDY  #$00                         300 : A0 00
       TYA                                     98
     1 STA  ($1A),Y                            91 1A
       INY                                     C8
       CPY  $08                                C4 08
       BNE   1                                 D0 F9
       STA  $09                                85 09
       STA  $06                                85 06
     2 LDY  $06                                A4 06
       LDA  ($1A),Y                      310 : B1 1A
       BNE   6                                 D0 1C
       LDA  ($18),Y                            B1 18
       STA  $07                                85 07
     3 JSR   7                                 20 3F 03
     4 INY                                     C8
       CPY  $08                                C4 08
       BEQ   5                                 F0 08
       LDA  ($18),Y                      320 : B1 18
       CMP  $07                                C5 07
       BEQ   3                                 F0 F2
       BNE   4                                 D0 F3
     5 LDY  $09                                A4 09
       LDA  #$FF                               A9 FF
       STA  ($1C),Y                            91 1C
       INC  $09                                E6 09
     6 INC  $06                          330 : E6 06
       LDA  $06                                A5 06
       CMP  $08                                C5 08
       BNE   2                                 D0 D6
       LDY  $09                                A4 09
       LDA  #$FF                               A9 FF
       STA  ($1C),Y                            91 1C
       RTS                                     60
     7 TYA           )                         98
       PHA           ) Par malchance     340 : 48
       LDY  $09      ) l'adressage             A4 09
       STA  ($1C),Y  ) indéxé par X            91 1C
       INC  $09      ) concerne                E6 09
       PLA           ) le pointeur             68
       TAY           ) lui-meme et             A8
       LDA  #$01     ) non l'adresse           A9 01
       STA  ($1A),Y  ) qu'il contient.         91 1A
       RTS           ) On utilise donc   34D : 60
                       cet astuce en
                       remplacement:
     On sauvegarde la valeur de Y et on utilise Y pour l'adresse
     indéxé.

     Après avoir précodé le message à rechercher, il reste encore
     à se servir de ces données pour finir la recherche.
     Pour savoir si les données pointées par le pointeur Adresse1
     correspondent au message recherché codé par un codage par
     transcription, on utilisera le système suivant:
     Adresse1 pointe les données à tester.
     Adresse2 pointe la table RESULTAT contenant le message
     précodé.
     PTRAIT sert de pointeur de lecture de la table RESULTAT.

     Supposons que l'on recherche le message codé dans une zone
     de données incluse entre les pointeurs Adresse3 ( adresse
     de début incluse ) et Adresse4 ( adresse de fin exclue )
     Le pointeur Adresse1 prend successivement tous les valeurs
     comprises entre Adresse3 et Adresse4.
     La technique consiste à lire RESULTAT champ par champ et à
     comparer les octets correspondants de Adresse1 pour chaque
     champ ( L'adresse de ces octets est égal à la somme de
     Adresse1 et de la position relative lu dans le champ ).
     Si tous ces octets sont identiques pour un meme champ, leur
     valeur commune est mise de coté dans la table DIFFERENT.
     Si cela est vrai pour tous les champs, alors on passe à la
     vérification de la table DIFFERENT ( voir plus loin ).
     Par contre, si pour un quelconque champ, certains octets
     correspondants sont différents, les données pointées par
     Adresse2 ne peuvent correspondre au message recherché.
     Mais finalement cette méthode ne permet que de vérifier le
     fait que des octets identiques du message correspondent à
     des octets de données eux-aussi identiques. Mais il faut
     encore vérifier que si 2 octets du message sont différents,
     les octets de données correspondant sont différents.
     Pour cela, il suffit de comparer les valeurs de
     transcription des différents champs ( On appelle valeur de
     transcription d'un champ la valeur commune des octets de
     données correspondant à un meme champ. Cet valeur a été
     mise de coté à la fin du test de chaque champ, dans la table
     DIFFERENT )
     Donc si tous les octets de la table DIFFERENT sont
     différents les uns des autres, les données pointées par
     Adresse1 correspondent au message recherché codé par
     transcription. Sinon, il y a incompatibilité.
     NB : Les zones de données identiques passent donc toujours
          victorieusement le premier test, et ne sont refusées
          que par le second, alors que des données quelconques
          sont généralement évincées dès le début du premier
          test. Ainsi lorsque le système de recherche parcourt
          une zone de données identiques et que le temps de
          recherche augmente considérablement, ne vous affolez
          pas, rien de plus normal.

     Pour ceux qui n'auraient pas tout compris, un petit
     organigramme pour tout éclaicir.
     Si vous avez suivi ce qui précède, vous avez remarqué qu'
     il manquait un pointeur pour la table DIFFERENT. Rajoutons
     le. Plus un autre dont vous n'avez peut-etre pas remarquer
     l'absence. On obtient donc:
      - Les pointeurs doubles Adresse1 et Adresse2.
      - Les pointeurs doubles Adresse3 et Adresse4.
     ( La signification de ces pointeurs est indiqué ci-dessus )
      - Le pointeur double DIFFERENT, pointant la table DIFFERENT
      - Les pointeurs simples:
        - PTRAIT, pointeur de traitement.
        - PDIFF, pointant le prochain octet de DIFFERENT à uti-
          liser.
        - VALEUR, un pointeur de service ou est mise de coté la
          valeur de transcription du champ en cours d'analyse.
     ( On peut se passer de Adresse3 en mettant directement la
     première valeur de Adresse1 dans Adresse1. )

                                       ( SORTIE FINALE )
                                               A
                                               !
     ( Adresse1 <-- Adresse1+1 ) ---> **  Adresse1 < Adresse4  **
      A                                !
      !                                !oui
      !  ( PTRAIT <-- 0 ) <------------=--- ( ENTREE PRINCIPALE )
      !  ( PDIFF  <-- 0 )
      !         !
      !         V
      !  (    Y <-- PTRAIT    )
      !  ( A <-- 'Adresse2',Y )
      !                !
      !                V                non
      !  (          Y <-- A        ) <------ **  A = $FF  **-=
      !  ( VALEUR <-- 'Adresse1',Y )                A     oui!
      !                !                            !        !
      !                V           ( PTRAIT <-- PTRAIT+1 )   !
      !  ( PTRAIT <-- PTRAIT+1 )   (    Y <-- PTRAIT     )   !
      !  (    Y <-- PTRAIT     )   ( A <-- 'Adresse2',Y  )   !
      !  ( A <-- 'Adresse2',Y  )              A              !
      !   A          !                        !              !
      !   !          V        oui  (    Y <-- PDIFF    )     !
      !   !   **  A = $FF  ** ---> (   'DIFFERENT',Y   )     !
      !   !          !             (    <-- VALEUR     )     !
      !   !          !non          ( PDIFF <-- PDIFF+1 )     !
      !   !          V                                       !
      !   !   (       Y <-- A      )             =-----------=
      !   !   ( A <-- 'Adresse1',Y )             !
      !   !            !                         !
      !   =---= oui    !                         !
      !       !        V                         !
      =---- **  A = VALEUR  **                   !
      ! non                                      V
      !                                  ( PTRAIT <-- 0 )
      !                                          !
      !                                          V
      !                                  ( Y <-- PTRAIT ) <---=
      !                                          !            !
      !                                          V            !
      !                               ( A <-- 'DIFFERENT',Y ) !
      !                                          !            !
      ! oui                           non        V            !
      =---- **  'DIFFERENT',Y = A  ** ----> ( Y <-- Y+1 )     !
      !                  A                       !            !
      !                  !       non             V            !
      !                  =------------ **  Y = PDIFF  **      !
      !                                        !              !
      !                                        V              !
      !                             ( PTRAIT <-- PTRAIT+1 )   !
      !   ( Message recherché  )               !              !
      =-- ( trouvé à l'adresse )  oui          V          non !
          ( de 'Adresse1'      ) <- **  PTRAIT = PDIFF  ** ---=

     On tire de l'organigramme suivant un exemple assemblé, en
     posant:
     - Adresse1 en $18, $19     ( $1000 par exemple )
     - Adresse2 en $1A, $1B     ( $980 dans l'exemple précédent )
     - Adresse4 en $1C, $1D     ( $2000 par exemple )
     - DIFFERENT en $1E, $1F    ( on peut réutiliser $900 )
     - PTRAIT en $06
     - PDIFF en $07
     - VALEUR en $08

     Ce qui donne par exemple:      ( Assemblé en $300 )

     1 LDA  #$00                       300 : A9 00
       STA  $06                              85 06
       STA  $07                              85 07
       LDY  $06                              A4 06
       LDA  ($1A),Y                          B1 1A
     2 TAY                                   A8
       LDA  ($18),Y                          B1 18
       STA  $08                              85 08
     3 INC  $06                              E6 06
       LDY  $06                        311 : A4 06
       LDA  ($1A),Y                          B1 1A
       CMP  #$FF                             C9 FF
       BNE   9                               D0 40
       LDY  $07                              A4 07
       LDA  $08                              A5 08
       STA  ($1E),Y                          91 1E
       INC  $07                              E6 07
       INC  $06                        321 : E6 06
       LDY  $06                              A4 06
       LDA  ($1A),Y                          B1 1A
       CMP  #$FF                             C9 FF
       BNE   2                               D0 DF
       LDA  #$00                             A9 00
       STA  $06                              85 06
     4 LDY  $06                              A4 06
       LDA  ($1E),Y                    331 : B1 1E
     5 INY                                   C8
       CPY  $07                              C4 07
       BEQ   8                               F0 17
       CMP  ($1E),Y                          D1 1E
       BNE   5                               D0 F7
     6 INC  $18                              E6 18
       BNE   7                               D0 02
       INC  $19                        340 : E6 19
     7 LDA  $19                              A5 19
       CMP  $1D                              C5 1D
       BCC   1                               90 B8
       LDA  $18                              A5 18
       CMP  $1C                              C5 1C
       BCC   1                               90 B2
       RTS       ( Sortie finale )           60
     8 INC  $06                              E6 06
       LDA  $06                        351 : A5 06
       CMP  $07                              C5 07
       BNE   4                               D0 D8
       BEQ   0                               F0 09
     9 TAY                                   A8
       LDA  ($18),Y                          B1 18
       CMP  $08                              C5 08
       BEQ   3                               F0 AF
       BNE   6                         360 : D0 DA
     0 LDA  $19      ) Affichage             A5 19
       JSR  $FDDA    ) de                    20 DA FD
       LDA  $18      ) 'Adresse1'            A5 18
       JSR  $FDDA    )                       20 DA FD
       LDA  #$A0     )                       A9 A0
       JSR  $FBFD    )                       20 FD FB
       CLC                             371 : 18
       BCC   6                               90 C8

     ( Programme 12 )


     "A propos d'anstrom:" ( HN )

     L'utilisation pratique de Anstrom pour le système analogique
     ressemble en tous points à celle du système décodage
     ADC-EOR. Je recite néanmoins dans l'ordre toutes les opéra-
     tions:

     1 - Charger le Super Scanner en utilisant le menu opplus.
     2 - Sélectionner opplus actif.
     3 - Sélectionner "Recherche" dans le menu Disk.
     4 - Sélectionner la nature du message recherché:
         - Texte    - Héxadéximal    - Bits séparés
     5 - Sélectionner le mode de recherche analogique.
     6 - Sélectionner le Champ De Recherche ( CDR ):
         - les 35 pistes: Toute la disquette.
         - Suite: Tout le reste de la disquette à partir de celui
           pointé par Piste/Secteur.
         - Cdt: Sur une suite définie de secteurs, par exemple un
           fichier ( Il est d'abord nécessaire de définir le
           fichier en question par:
           1 - "Indication-création" dans cdt.
           2 - "Effacement".
           3 - "Cumul" ( Si besoin ).
           4 - "Certains fichiers".
           5 - Cliquer sur le ou les fichiers désirés
           6 - "Recherche" pour revenir au Super Scanner )
     7 - Sélectionner le mode de renvoi:
         - Ecran: pour avoir directement le résultat en édition
         - Cdt ou Cdt opposé: pour établir dans le cdt la liste
           des secteurs contenant le message codé.
         - Mixte: Les deux précédents en meme temps.
     8 - Cliquer dans le bas de l'écran pour définir le message
         recherché. (Attention, dans ce mode les caches ne
         fonctionnent plus.)
     9 - Cliquer sur RECHERCHE pour débuter la recherche.
     Si un message correspondant est trouvé et que le renvoi
     est sur écran ou sur mixte, le système tente de décoder
     le message repéré grace à une routine de décodage multiple
     pouvant combiné tout les mélanges de EOR, ADC et ROTATION
     possible. Si cette tentative réussit, le secteur édité est
     décodé selon le code trouvé, ce code étant affiché dans le
     cadre réservé au code. Sinon le secteur est édité comme il
     a été lu, et toute tentative de décodage par la commande
     DECODAGE est alors inutile.
     10 - Cont.Rech: pour reprendre éventuellement la recherche.

     NB: Attention, il est absolument capital de taper le message
         à rechercher le plus parfaitement possible.
         En effet, par exemple, le message "the battle" au lieu
         de "the Battle" sera repéré sans problémes car il n'y
         a qu'un seul "B". Pour le système analogique peu importe
         qu'il soit en majuscule ou en minuscule. Car pour lui
         les caractères ne comptent que comme identiques ou dif-
         férents des autres caractères du message. Et le "b" à
         ces niveaux-là a les memes propriétés que le "B". Mais
         attention, pour le multi-décodeur, il est très important
         de taper exactement le message, sinon le code risque de
         ne pas etre reconnu car le multi-décodeur travaille avec
         les valeurs exacts et pour lui "b" différent de "B".

     A BIENTOT POUR LE CHAPITRE DEUX, POUR L'ETUDE DES CODAGES
     EVOLUTIFS.


Retour sommaire

hr DEPME

Face 2 : INDOOR SPORTS.


+-----------------------------------------------------------------------------+
!  INDOOR SPORTS    (C) 1987 BY MINDSCAPE           DENY from the Highlanders !
+-----------------------------------------------------------------------------+

Salut mes chéri(e)s,

Voici, en dernière exclusivité, en clair et sans décodeur, le déplombage du
tout dernier Mindscape, j'ai nommé : ' INDOOR SPORTS '
Tout de suite, et sans autre forme de procés, une page de pub, comme dans tous
les bons fichiers text qui se respectent......

  " Ce tres bo soft a été acheté grace à la trés trés trés belle organisation
THE BLACK CHEST, fondée par LOOCKHEED....si vous désirez de plus amples
renseignements sur THE BLACK CHEST et sur les types cools qui la composent,
n'hésitez pas un instant : piquez le minitel de votre voisine, et tapez
le code magique : ' 36-14 code : RTEL bal : LOOCKHEED '......vous ne le
regretterez pas...."

Avant de tout vous dire sur le déplombage de ce bo soft, quelques mots sur
la protection :

Tout comme Balance of Power, édité également chez Mindscape, la protection
consiste en un ProDos patched....revoici, en condensé ( comme le lait ), les
grandes lignes du pourquoi du comment du ProDos patched version Mindscape...

Le ProDos patched utilisé par Mindscape utilise les deux schémas de protection
suivants :

1) Les tables de translation ( vous savez, celles qui servent à convertir les
nibbles de la diskette en octets et vice et versa ) sont anormales...
Le résultat est que si on lit les secteurs de l'original avec une table de
translation normale, les secteurs de celui-ci vont alors ressembler à un trés
trés trés trés joli n'importe quoi..... ( pour de plus amples renseignements
sur le très délicat sujet des tables de translation du ProDos et du Dos 3.3,
reportez-vous à mon fichier sur Balance of Power et à celui de Kristo sur
Infiltrator....)....

2) Il y a un nibble-count ( oui, je crois qu'on peut appeller ça comme ça ), en
plein milieu du ProDos, qui teste la présence d'une chaine de nibbles sur le
disk...si elle s'y trouve, c'est que la diskette est l'originale, sinon, c'est
qu'il s'agit d'une infaaaaaaaame copie.......
Cette routine de nibble-count se trouve en $FF00 en carte langage ( C083 )...
Là encore, voyez mon fichier sur Balance of Power.....

Ces rappels étant effectués, voici le déplombage ( enfin ! ) de ce bo soft....

1) Bootez ' advanced demuffin 1.1 ', puis faites un exit to monitor : de là,
   tapez de vos doigts jaunis par la nicotine :

* BA96:3F
* BAFF:00
* 800G

   Puis, convertissez les deux faces de l'original....Cette étape permet de
   recréer un schéma de translation normal sur le disk....
   Au fait, il est possible que les T$00 S$00 et S$0E ne passent pas...
   Ne vous inquiétez pas, c'est normal.....

2) Prenez un éditeur de secteur et recopiez :

T$00 S$00 de l'original ( face 1 ) sur T$00 S$00 de la copie ( face 1 )
     S$0E                                   S$0E
     S$0D                                   S$0D
     S$0C                                   S$0C

   Répétez la meme opération avec les faces 2 de l'original et de la copie.

3) Toujours avec le meme éditeur de secteur, changez les octets suivants sur
   la copie face 1 :

T$00  S$0E  octet $32 : 60
T$04  S$0B  octet $96 : 00  ( was FC )
            octet $FF : FC  ( was 00 )
T$04  S$0A  octet $03 : 96  ( was FF )
            octet $FF : FF  ( was 96 )

   Ces modifications servent à remettre une table de translation normale dans
   le ProDos.....

4) Enfin, changez, toujours sur la face 1 de la copie :

T$01  S$0F  octet $84 : 2C 0C FF ( was 20 00 FF )

   On vient de remplacer le JSR à la routine de vérif par une instruction qui
   n'a aucune utilité ( BIT $FF0C ), mais qui permet de parer à un éventuel
   checksum de la mémoire, car équivalente au JSR...( c'est pas trés clair, je
   sais, mais je fais ce que je peux...)

                        ------------------------

Et voilà, c'est fini, vous avez, comble de la joie dans les chaumières, une
copie parfaitement déplombée de Indoor sports....chance !!!!!
Pour finir, j'aimerais dédier ce bo fichier text à Anne, qui illumine mes jours
et augmente mes factures de téléphone !!!!

' Bonne nuit les petits ', nous dit NouNours sur son nuage volant......

-------------------------------------------------------(k) 1988 by DENY--------


Retour sommaire

hr DEPME

Face 2 : L.A. CRACKDOWN 1.


===============================================================================
LOS ANGELES CRACKDOWN (c) EPYX 1988                        (K) Max a gaZ  DIJON
===============================================================================

    Salut à tous,

   Pour ceux qui ne me connaissent pas encore (y'en a ???) je dirais simplement
que je déplombe depuis peu grace aux sages conseils de Godfather...Comme Adam,
(qui avait fait 2 piti fichiers dans Dep.me 8) je tiens à signaler que j'ai
débuté comme lui en ne connaissant que le basic et que les cours de déplombe
du maitre m'ont aidé à m'ammener au niveau que j'ai atteint.

   Pour ceux qui ne connaissent pas les cours de GDF (y'en a ???), je dirais
simplement qu'il en a fait un sur la protection Epyx (un best seller, je dois
l'avouer).

   Pour ceux qui ne connaissent pas LA protection Epyx, je ne puis que les
inviter à lire ce piti fichier...Allez, once l'anse:


    On remarque tout d'abord que le programme ne passe pas au Locksmith rapide.
Onsdi alors que c'est p'tèt ben un disk en format patched et qu'ce s'rait p'tèt
ben une bonne idée de le convertir au format normal avec un Adv. Demuffin par
exemple:

]CALL-151
*B942:18
*BRUN ADVANCED DEMUFFIN 1.1

On choisi l'option convert disk et c'est parti !!!
(On répète l'opération pour la face 2)

On lance la copie demuffin (au cas où la protection ne serait qu'un simple
changement format...on peut toujours rèver !) qui charge trois fois rien et
qui reboote sans arrèt...il y a donc une vérif au boot et pour faire plaisir
à GDF, on va boot-tracer:

]CALL-151
*1600<C600.C700M    ; On reloge le Boot 0 pour le modifier.
*16F8:60            ; On le modifie pour qu'il rende main.
*1600G
*C0E8               ; Facultatif: stoppe le drive.

*801L

En explorant cette routine en 801, on s'aperçoit qu'en $84D on a un
JMP $F000 alors qu'on devrait trouver un JMP $B700 sur un disk normal (à peu
près au mème endroit) au format 3.3 et que sur les autres Epyx sous 3.3 on
trouve un JMP $BB00 (mais vous vous en foutez surement car c'est pas ce qui
nous intéresse).

On va donc continuer à boot tracer pour voir ce que cette routine charge
en $F000:

*16F8:A9 60 8D 4D 8 4C 1 8  ; Pour que le prgm rende la main en $8FD au lieu
*1600G                      ; d'aller voir en $F000 ce qui s'y passe...

En zieutant en $F000, on retrouve la vérif folle de la désormais célèbre
Désynchro Epyx (je vais pas la détailler, reportez vous au cracking des Epyx
dans Dep.me 8). Le principe de cette vérif c'est de rechercher 8 nibbles sur
le disk, que ces nibbles ne se trouvent que sur l'original, et qu'avec, elle
va décoder une partie de la mémoire pour s'y rendre aprés ce décodage.

La vérif a quelque peu changé par rapport à Rad Warrior par exemple, mais pour
celui qui sait, c'est toujours la méme chose; ce qui a changé:

- l'emplacement de la désynchro mais celà ne sert pas à grand chose pour faire
  sauter c'te vérif (pour les fouineurs, je dirais qu'elle se trouve en piste
  $20 sur le secteur $00, si je ne m'abuse)

- L'emplacement en mémoire où sont stockés les 8 nibbles: avant, ils étaient
  mis de $F0 à $F7 et là ils se trouvent entre $F8 et $FF.

- L'ordre des nibbles stockés: on avait avant en $F0 - FC EE EE FC E7 EE FC E7
  et on a maintenant les mèmes mais dans le sens inverse en $F8, à savoir:
  $F8 - E7 FC EE E7 FC EE EE FC

- et enfin l'adresse à laquelle le programme se branche après le décodage : au
  lieu de $B700 comme toute RWTS 3.3 qui se respecte, on trouve un JMP ($08FD)
  mais avec EC00 en $08FD (JMP ($8FD) = JMP $EC00).


Pour faire sauter la vérif, il suffit donc de poker les bonnes valeurs en
mémoire et de brancher tout de suite après le prgm sur l'adresse de la routine
de décodage. On prend donc un bon éditeur de secteur, Diskfixer 4.0 par exemple
ou mieux encore: Mobby disk II (faudrait vous y habituer car dans le genre, on
ne fait pas mieux). On lit en piste $00 le secteur $05 et on inscrit à partir
de l'octet $00:

            A9 E7 85 F8 85 FB A9 FC
            85 F9 85 FC 85 FF A9 EE
            85 FA 85 FD 85 FE 4C 7C
            F0

                            ...et c'en est fini pour cet Epyx !!!

On peux cependant procéder d'une autre façon, qui demande à en comprendre plus
dans la vérif mais qui présentera un léger gain de vitesse et surtout un gain
de place sur le disk...

Quand on continue à explorer la vérif, on s'aperçoit que la routine inscrit
$EC en $F1 et qu'ensuite elle décode deux pages mémoire (2 * $FF) à partir de
$EC00 justement, avec deux des nibbles stockés en $F8. On va donc recharger
Mobby disk II et décoder ces pages à la main (c'est à dire 2 secteur).
On lit le secteur $01 de la piste $00, on tape + (Codage EOR) et FC puis on
réécrit cette piste décodée au mème endroit.

On passe ensuite au secteur suivant de la mème piste, à savoir le $02 et on
EOR ce secteur avec la valeur E7 : on tape donc + suivit de E7 et on réécrit
celà sur le disk.

Il nous reste ensuite à modifier le JMP $F000 (qui se trouve en $8FD) en un
JMP $EC00; on se place donc sur le secteur $00 de la piste $00 et on modifie
l'octect $4F en inscrivant à la place de F0 un EC.

comme ça, la vérif est neutralisée totalement et il nous reste le secteur $05
de la piste $00 pour y faire ce qu'on veut puisque maintemant la vérif ne
sert plus à rien.

    Ainsi se termine ce crack sympa. Je profite que j'ai encore la parole pour
vous parler un ch'ti peu d'une nouvelle saga de docs. Ca s'appelle DOX A GAZ et
c'en est pour l'instant au numéro II dont la version 1.0 a été terminée le 16
Aout. C'est super, tout est en français !! On trouve entre autre dessus:

    DOX A GAZ n°1: la doc complète de BARD'S TALE II
    DOX A GAZ n°2: les docs françaises de:
                        BOULDERDASH CST.KIT
                        WORLD CLASS LEADER BOARD
                        LEGACY OF THE ANCIENTS
                    et les codes de PIRATES !
  
    DOX A GAZ n°3: (en préparation)
                    DECISION IN THE DESERT (c'est tout pour l'instant)


                                ...alors à bientot dans DOX A GAZ !!!


                                                                      Max A Gaz
==:=========================================================================:==


Retour sommaire

hr DEPME

Face 2 : L.A. CRACKDOWN 2.


 _____________________________________________________________________________
!                                                                             !
! Déplombage de "L.A. CRACKDOWN" par THE JOKERSOFT et LOOCKHEED pour DEP.ME 9 !
! --------------------------------------------------------------------------- !
!    Un super fichier explicatif sur le comment du pourquoi de ce plombage    !
!  Fait le 29/7/88 jour de l'achat du 14ème soft Black Chest et de son crack  !
!_________________________________________________________________________TJS_!


Ce soft comme beaucoup d'autres qui sont sortis récemment chez EPYX, est
lisible au DISK MUNCHER et se convertit au format 3.3 avec ADVANCED DEMUFFIN.

]BLOAD ADVANCED DEMUFFIN 1.1       ;disponible dans toutes les bonnes crèmeries
]CALL-151
*B942:18 N 800G                    ; classique mais si efficace
>CONVERT DISK                      ; Y(ES) si nécessaire

Et copiez les 2 faces en ayant pris soin auparavant d'avoir formatter de votre
disk vierge.

Puis on boote-trace :

]CALL-151

*1600<C600.C6FFM
*16F8:60

*1600G                             ; reboot
*C0E8                              ; permet d'éteindre le lecteur

*801L                              ; examinons le BOOT0

en 807: JSR $861
et 861: AD 81 C0 AD 81 C0
   ... suite
   88B: AD 83 C0 AD 83 C0          ; tiens on est dans le bank2
   891: 60                         ; on retourne en 80A
en 80A: suite
et 839: 6C 3E 00                   ; JMP ($003E) çà ressemble bcp à du boot 3.3

On continue notre listage et on touve le saut fatidique :

   84D: 4C 00 F0                   ; JMP $F000 en plein dans le bank

Mais qu'il y a t'il en $F000?

On reboot le soft puis 2 secondes après le boot on fait ctrl-pomme-reset puis
très rapidement ctrl-reset, puis :

]CALL-151

*300:AD 83 C0 AD 83 C0 A0 00 B9 00 F0 99 00 20 C8 D0 F7 EE 0A 03 EE 0D 03
     AD 0D 03 C9 21 D0 E8 AD 81 C0 AD 81 C0 60

*300G

C'est-à-dire une super routine de move $F000 (bank) en $2000 (ram normale).

*2000L

2000-   A9 00       LDA   #$00     ; début de la routine (avant en $F000)
2002-   8D 78 04    STA   $0478
2005-   A9 40       LDA   #$40
....
200E-   85 FC       STA   $FC      ; mais que stocke t'il en page zéro?
....
201A-   85 FD       STA   $FD      ; mais c'est dingue çà!!!
....
202B-   A0 00       LDY   #$00     ; on saute de joie, c'est la verif'
202D-   BD 8C C0    LDA   $C08C,X
2030-   10 FB       BPL   $202D
....
2043-   C9 E7       CMP   #$E7     ; vous avez dit bizarre!
....
204C-   C9 E7       CMP   #$E7     ; comme c'est bizarre!
....
2055-   C9 E7       CMP   #$E7     ; vous avez dit étrange!
....
2068-   C9 EE       CMP   #$EE     ; comme c'est étrange!
....
2075-   99 00 00    STA   $0000,Y  ; on tiens presque le bout
....
207A-   30 F4       BMI   $2070    ; fin de la vérif'
207C-   A9 00       LDA   #$00     ; routine qui décode les EOR #
207E-   A8          TAY
207F-   85 F0       STA   $F0      ; encore dans la page zéro
....
208E:   6C FD 08    JMP   ($08FD)  ; ca ressemble toujours à un boot 3.3

On décide alors de regarder ce qu'il y a dans la page zéro :

*F0.FF

*F0- 00 EE 00 00 D5 AA 96 DE
*F8- E7 FC EE E7 FC EE EE FC

A l'aide de DISKFIXER V4.0 (et surtout pas MOBBY DISK II) on rentre la routine
suivante :

P$00, S$05 (c'est-à-dire ORG$F000), O$2B :

A9 FC 85 F9 85 FC 85 FF A9 EE 85 FA 85 FD 85 FE A9 E7 85 F8 85 FB 4C 7C F0

On met les EOR # :

- FC dans F9, FC, FF,
- EE dans FA, FD, FE,
- E7 dans F8, FB

Puis on saute à la routine qui décode ces EOR #, en $F07C.

Le prg sauve des parties sur le disk (en piste $0F), mais il a une RWTS
classique, on pourra d'ailleurs repérer les headers avec Nibbles Away :
D5 AA 96  DE AA EB  D5 AA AD.

Pour finir, je peux vous dire qu'il y a un catalog sur le disk mais il ne sert
à rien, peut-etre a t'il été oublié par les programmeurs!!!

_______________________________________IT'S ANOTHER CRACK FROM THE BRAIN TRUST


Retour sommaire

hr DEPME

Face 2 : NEWS APPLE II.


 ____________________________________________________________________________
!                                                                            !
! Toutes les news en attente...                                              !
!                                                                            !
!_The_Brain_Trust_:_NEWS_(_ENTERTAINMENT_+_EDUCATIONAL_)____________30/07/88_!

- Bad Street Brawler (Mindscape)
- Bismarck (Datasoft)
- Blackjack Academy (Activision)
- Card Sharks (Accolade)
- Computer Statis Pro Baseball (Avalon Hill)
- Crosscheck (Datasoft)
- Crosscheck Data Disks (Datasoft)
- Create A Calendar (Epyx)                      (g: on a déjà ma poule!)
- Deflexor (Epyx)
- Dive Bomber (Epyx)
- Firepower (Activision)
- Full Count Baseball (Lance Haffner Games)
- Graphics Scrapbook Chapter 1 : Sports (Epyx)
- Graphics Scrapbook Chapter 2 : Off the Wall (Epyx)
- Graphics Scrapbook Chapter 3 : School (Epyx)
- Homecourt (Origin Systems, Inc.)
- Home Video Producer (Epyx)
- Howard the Duck (Activision)
- Impossible Mission II (Epyx)
- It's Only Rock and Roll or Hot and Cool Jazz (EOA)
- Mind Mirror (EOA)                                     (g: on a déja!)
- Mind Pursuit (Datasoft)
- Mother Goose (Sierra On-Line)
- Omnicron Conspiracy (Epyx)
- Periscope (Action Software)
- Rampage (Activision)
- Software Golden Oldies (EOA)                         (g: nul!.. des reprises)
- Space Rogue (Origin Systems, Inc.)
- Spiderbot (Epyx)
- Sporting News Baseball (Epyx)
- Statmanager (Software Simulations)
- Star Rank Boxing II (Gamestar)
- Sticker Maker (Epyx)
- Street Sports Soccer (Epyx)
- Tank Battle Simulator (Epyx)
- The Games : Winter Edition (Epyx)
- The Sporting News Baseball (Epyx)
- Ticket to London, Paris, Spain, or Washington D.C. (Bullseye)
- The Last Ninja (Activision)
- Uridium (Mindscpe)
- VCR Workshop (Epyx)
- Video Title Shop Graphics Companion (Datasoft)

Soit 18 Epyx, 5 Activision et Datasoft, 3 EOA et Mindscape, 2 Origin, etc...
et quelques 9 Sierra On Line dont j'ai pas mis tous les titres ici.




The Brain Trust feat. Captain Crack, Copperfield, Loockheed, and The JokerSoft
_______________________________________________________________________________


Retour sommaire

hr DEPME

Face 2 : REGLEMENT GDF CHEST 89.


ATTENTION : VOICI LE REGLEMENT DU NOUVEAU BLACK CHEST !!!!!
___________________________________________________________


Salut les sganophar-vulkanostatiks !


        En ce moment tout bouge dans le monde de la micro-informatique!

        Preuves :

        Loockheed et le brain trust m'ont volé le black chest, dont je suis
        le créateur seul et unique - c'était il y a plus d'un an maintenant -
        Ils sont en train d'insulter tout le monde sans exception dans leur dos
        ou en public, ils croient avoir des amis partout alors qu'ils n'en ont
        nulle part, ils croient.. ils pensent.. et ils se trompent..
        et today, je lance un nouveau Black Chest.. c'est normal.
        et meilleur que le leur, c'est la moindre des choses.

        Le principe est le suivant :

        Plutot que d'acheter un soft GRACE A VOUS, de le déplomber GRACE A VOUS
        et de le signer de mon pseudo mégalo GRACE A VOUS, je me suis dit qu'il
        serait plus normal de l'acheter POUR VOUS, de VOUS le faire déplomber
        en VOUS AIDANT quand il le faut, et enfin de VOUS le faire signer,
        en vous aidant encore si necessaire.

        C'est pas plus logique ?

        Ainsi, vous mettriez 40 Francs (c'est la somme retenue, mais plus vous
        mettrez, plus on s'envelera bien sur!, et plus on vous aimera.)
        dans un soft, on l'achete, on vous en poste une copie plombée, avec
        une aide technique très précise pour que vous le déplombiez vous-memes
        avec tous les utilitaires souvent inédits et necessaire à cela,
        on vous dit aussi comment le signer, on peut meme inclure au boot une
        image ou tout ce que vous voudrez, POUR VOUS !!!

        Le reste est le principe bete d'une coopérative d'achat comme vous les
        connaissez maintenant sur Apple II... et pour l'instant, not IIgs.
        J'ai dit pour l'instant...

        Bref, j'en avais déjà prévenu certains et puis j'ai avancé du fric,
        et participé moi-meme, pour acheter LE dernier Epyx, à savoir :

                        STREET SPORT SOCCER (c) Epyx 1989

        Pour nous aider à le financer après coup, ET pour participer au
        prochain, pensez-y, vous pouvez nous poster, à l'adr. suivante,
        votre reglement plus cinq disks qu'on arrivera bien à remplir de
        trucs cheese inédits, ainsi donc que de ce méga jeu de cours de
        récréation very sympa !.. sérieux.

        Les explications pour que VOUS le déplombiez et le signiez sont déjà
        rédigées, et pretes à partir.. et pour le moment, nous sommes les seuls
        à l'avoir dans ce beau pays. VOUS pouvez le déplomber avant tout le
        monde, but faites vite !.

        Merci.. Merci de nous aider ! Et de nous faire connaitre.

        Ca vaut le coup !             ___________________________________
                                     !                                   !
                                     !  Contactez moi en 3615 code RTEL  !
                                     !  Bal GODFATHER                    !
                                     !                                   !
                                     !  Et laissez moi votre adresse,    !
                                     !  Pour que tout vole !             !
                                     !___________________________________!


Retour sommaire