******************************************************************************
*******************************P.G.K n7: Juin 99*****************************
******************************************************************************

       ͻ
         
        ۱۱۱۱ 
        ۱۱۱۱۱ 
        ۱۱۱۱۱ 
        ۱۱۱۱۱ 
        ۱۱۱۱۱ 
        ۱۱۱ 
        ۱۱۱ 
        ۱۱۱۱۱   
        ۱۱۱۱۱   
        ۱۱۱۱۱   
        ۱۱۱۱۱ 
        ۱۱۱۱ 
         
       ͼ
                                           by Johann__3, johann__3@hotmail.com
    
******************************************************************************
**********************************Disclaimer**********************************
******************************************************************************

  Quelles que soient les conneries que vous pourriez faire suite  la lecture  
de cet e-zine ou  la consultation du site de Pretty Good Keys (www.multimania  
.com/pgk), les deux principaux auteurs que sont NONO (nono_18_02@hotmail.com)
et Johann__3 (johann__3@hotmail.com) ne sauraient en tre tenus responsables.
  En effet, de par la nature mme des lois qui tentent vainement de rgir 
notre putain de pays de merde, vous tes libres de poursuivre ou non votre 
lecture, en sachant cependant que si vous continuez plus loin, les auteurs 
respectifs de tout ce qui suit n'encouragent personne  raliser les actions 
dcrites ci-dessous, mais les dcrivent uniquement  titre informatif.
  Cependant, les lois ne sont bien videmment pas les mmes dans tous les
pays, et donc, si chez vous, votre droit d'accs aux informations que vous
pourriez trouver ici est encore plus restreint qu'en France, vous vous
devez de prendre vos responsabilits.    
  Ainsi, en lisant ceci, ou plus simplement, rien que par le simple fait d'
avoir charg ce site (et donc cette page et ce texte), vous prenez
connaissance de ces principes et de la "dresponsabilisation" des auteurs de
tout ce que vous pourrez trouver ici. Ce n'est pas du tout un manque de
courage de notre part, mais tout simplement un simple avertissement: aprs
tout, rien ne vous invite  lire, croire, et encore moins  reproduire les
actions dcrites ici.
  De plus, bien que vous pouvez trouver ici des rfrences  des substances
qui peuvent tre prohibes dans votre pays (notamment des substances
psychotropes), et qui le sont hls ici en France, cela ne constitue en aucun
cas un encouragement de quelque nature que ce soit  consommer ou mme
cultiver ces substances qui peuvent avoir des effets parfois incontrlables,
et qui peuvent s'avrer quelquefois dangereux (surtout pour ceux qui n'en
ont pas l'habitude).    
  Pour finir, en continuant votre lecture, vous acceptez ainsi de prendre
vos responsabilits et ainsi, en cas de problmes avec la justice (un malheur
est si vite arriv, et puis il faut dire que les keufs sont partout), nous
ne saurions en aucun cas tre impliqus dans vos problmes...    

******************************************************************************
**********************************Introduction********************************
******************************************************************************

  J'ai vraiment du mal  croire que je suis en train de taper ce numro sur un
un 386 avec 2 Mo de Ram et un cran en noir et blanc (avec quand mme un "bel"
autocollant Intel Inside et, bien videmment, Win 3.1)... Evidemment, ni modem
ni souris. Ca me change vraiment de mon P2 400, mais bon comme a, je suis pas
tent de jouer, vu que j'ai pas le choix (oh si, il y a Gorilla et Nibbles,
vous savez, les jeux livrs avec le DOS en QBasic). Tant mieux, car j'ai un
peu dlaiss P.G.K. ( part le site) pendant les vacances.
  Sinon, on m'a reproch de n'tre pas assez ax sur le hacking, cracking, et
le reste, et de parler beaucoup trop de tout et n'importe quoi... Bon, je dois
reconnatre que c'est vrai, mais l'ambition de P.G.K. n'a jamais t d'tre
entirement ax sur ces techniques, mais plutt sur tout ce qui peut concerner
l'underground. Et  part  quelques exceptions prs, je ne me suis jamais
loign de ce sujet.
  Alors, je vais donc commencer ce mois-ci des cours qui vont parler de C++,
d'assembleur (ASM) et de leurs applications en cracking. Comme a, tout le
monde sera content. Et puis d'ici un ou deux mois, je vais essayer de me 
mettre au phreaking de faon approfondie. Mais si vous voulez rllement des
articles pousss sur ces sujets, vous avez qu' les crire et me les envoyer.
Ou alors, crivez-moi pour me demander des trucs vraiment prcis et je ferai
tout mon possible pour vous crire des articles dessus.

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
********************************Sommaire**************************************
******************************************************************************

  - Courrier des lecteurs
  - Cours (NONO)
  - Comment faire vacuer un lyce? (NONO)
  - Cours d'Assembleur (Adam - traduit par NONO)
  - Cours d'Assembleur (suite) (Adam - traduit par NONO)
  - Quoi de neuf sur la scne? (NONO)

  Bon, comme vous pouvez le voir, encore un numro sans Johann__3. Hls.
  Souhaitons qu'il revienne bientt. 

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
******************************Courrier des lecteurs***************************
******************************************************************************

From: Fulla <fulla@ultim8team.com>
To: <nono_18_02@hotmail.com>
Subject: ur web site
Date: vendredi 30 avril 1999 03:51

  Yo les jeunes!

  Y'a encore du boulot sur votre site, parce que j'veux pas tre mchant, mais
l'html, c'est quand mme un putain de langage de pd! Java, vrml, xml????
Connaissez pas??
  Et pis des scripts en perl ou en cgi, c'est pas la mort  coder!!!
  C'est bien rigolo de faire les hackers on line, mais faut assumer le niveau,
alors je sais pas, bougez vos fesses de morpions, allez vous clater vos
boutons d'acn juvnile  la Fnac (agitateur mon cul) et arrtez de vous la
pter codeurs! C'est pas a qui vous fera connatre, seuls ceux qui ont fait
leurs preuves ont leur place sur la scne!
  Mais enfin bon, j'dis a comme a, moi, faites vos trucs si a vous branche
, mais te demande pas pourquoi, un jour quand t'es logu, ta souris se met 
bouger toute seule et des fentres s'ouvrent de nulle part, a sera la suite
logique des choses!! vous en avez dj trop fait....

        WaReZ RuLeZ, BiLl SuCkS, LiNuX uBeR aLlEs, Bo Is InSiDe U
			
  Allez arrter de pointer vers void et motivez-vous pour faire des choses
plus UlTiMe !!
hh

		UlTiM8TeAm WeBmAsTeR
see you on irc (server: galaxy net paris, channel: join #ultim8team)

PS: y vous manque un lien important!!!!!!........
scene.org! Essayez, vous apprcierez...

________                          _______________
	\`'~., Ultim8Team ,.~'`/
	   / CoDiNG thE FuTUrE \
	   \ AnD iT's NoT eAsY /
____________\                 /__________________
e-mail: fulla@ultim8team.com

[NONO: Salut! Moi qui me plaignais presque de ne jamais avoir reu de courrier
un poil agressif, avec toi je suis servi. Pas que tu sois vraiment mchant,
mais tu me remets bien en place, et je t'en remercie. Je sais pas si t'es au
courant, mais P.G.K. n'a jamais eu la prtention de rassembler les meilleurs
codeurs, loin de l. Bien au contraire mme, puisqu'au dpart, on n'est que
deux, moi-mme et Johann__3, qui ne codions rien du tout avant a. Le site a
pour unique vocation de rassembler beaucoup d'e-zines francophones, et a s'
arrte l. Il est pas du tout l pour t'pater toi ou tes petits copains.
Et pis c'est sr que Back Orifice, c'est vachement ElItE comme truc, hein
FuLlA. Parce que je suis sr que toi et tes petits potes, vous vous considrez
comme des HaCkErS (comme tu l'cris srement) parce qu'une fois par mois, vous
vous runnissez sur le net pour formater le disque dur d'un pauvre LaMeRz, non
? Ha, c'est sr, chacun a sa propre ide de ce qui est lame et ce qui ne l'est
pas... Devine mon opinion  ton sujet... Allez a+ et sans rancune!
PS: mais si tu veux me donner des conseils pour le site, ne te gne pas, je
les accepterai avec reconnaissance...]

From: Kanabych <kanabych@multimania.com>
To: nono_18_02@hotmail.com
Subject: New virus??!!!
Date: Sat, 29 May 1999 01:27:48 +0200

  As-tu entendu parler de ce virus W32/CIH.SPACEFILLER!!
  Sache qu'il a contamin mon malheureux ordi :( .
  Seulement, je trouce quelque chose de bizarre, c'est qu'apparement, le CD
original que j'ai de Win98 serait contamin selon McAfee??!!
  Ainsi que le dernier jeu que j'ai achet: Commandos: Beyond the call of
duty??!!!!
Bizarre, serait-ce un de ces virus dont on ne s'est pas aperu avant de graver
ces CD??!!!
Si tu connais qlq chose dessus, ce serait sympa de m'en informer :) .
                                     \|/
                                    { @ @ }
________________________________o00o___O___o00o____

   Kanabych       e-mail : kanabych@multimania.com
 ICQ# 36408493   http://www.multimania.com/Kanabych

                             " Increase The Peace "
___________________________________________________

[NONO: salut kanabych! Je vais essayer de rpondre de mon mieux  tes
questions, mais autant te prvenir, je crains de ne gure pouvoir t'aider. Le
CIH est une vritable saloperie qui infecte le BIOS du PC et peut mme faire
griller quelques composants (en poussant la frquence de la carte mre au
maximum: une sorte d'overclockage volontairement trop puissant). Le plus
connu est sans doute Tchernorbyl, qui a t hyper mdiatis et qui provoquait
de srieux dgats. Tu ne dcris pas les symptmes, ce qui aurait peut tre
permis d'identifier plus prcisment le virus. Quand au verdict de McAffee
concernant tes cds (achets!!! Je tiens  te fliciter. Si, si, srieusement
...), cela arrive relativement souvent (autrement dit de temps en temps). Ne
t'inqute pas, c'est probablement une fausse alerte. Sur ce, a+!]

******************************************************************************
*********************************Cours (NONO)*********************************
******************************************************************************

  Bon, alors on va examiner un ensemble extrmement simple de crack,  partir
d'un programme que l'on va nous-mme crire en C++. Vous me direz: quel 
intert de cracker un programme que l'on a crit? Dj, c'est beaucoup plus
simple  comprendre. De plus, ce cours s'adresse aux dbutants qui n'ont 
jamais os essayer de cracker quelque chose. Enfin, cela vous permet d'
apprendre quelques bases en C++ et en ASM, car je vais faire en sorte que ces
cours soient les plus dtaills possibles.

  Il vous faut donc un compilateur C++ (ou C si vous adaptez le programme), un
dsassembleur (je vous conseille Win32Dasm, que vous pouvez trouver sur le 
site), et puis c'est tout. Vous pouvez rajouter un diteur hxadcimal (Hedit)
mais c'est vraiment si vous y tenez, car a ne vous sera d'aucune utilit, 
moins que vous dsiriez enregistrer le crack).

  Bon, je vous livre le programme brut en C++, et je le commente aprs, car je
trouve que les commentaires dans le code source ne sont pas toujours trs 
accessibles.

  Ce programme demande donc un mot de passe et confirme ou infirme la rponse,
le code tant dfini dans le code source (ici, 2345, mais vous pouvez changer).
Comme vous voyez, et comme je vous l'avais annonc, c'est un programme
extrmement simple, et il ne vous faudra pas plus de quelques secondes pour le
cracker, mais a vous permettra d'acqurir des bases (enfin, des bases 
vraiment basiques, si j'ose dire):
 
#include <iostream.h>

int main()

{
        
        int pass;
        cout << "Mot de passe?\n";
        cin >> pass;
        if (pass==2345)
        cout << "OK\n";
else
        cout << "Perdu\n";

return 0;

}

  La premire ligne appelle le fichier "iostream.h" qui contient toutes les 
instructions grant les entres-sorties (Input-Output) en C++. Ce fichier est
normalement situ dans les rpertoire Include de votre compilateur, ou tout
du moins dans un "Path" dfini dans l'autoexec.bat. C'est lui qui vous permet
d'afficher  l'cran et aussi de recueillir la rponse de l'utilisateur.

  Ensuite, la deuxime ligne sert  dbuter la fonction principale: elle se
trouve dans tous les programmes en C++,  part quelques rares exceptions. L'
accolade sert donc  dbuter cette fonction.

 La troisime ligne sert  crer une variable appele "pass". Ici, il s'agira
d'un entier, compris entre 0 et 65256 ( peu prs). Le programme affiche 
ensuite  l'cran: "Mot de passe?", le "\n" tant l pour passer  la ligne 
suivante. Vous remarquez que dans "cout", l'instruction utilise pour afficher 
ceci, il y a "out", comme dans "output". Une fois ceci fait, on attend une 
rponse de l'utilisateur, que l'on enregistre  l'aide de l'instructrion cin 
("input") dans la variable "pass".

  Ensuite, on procde au test: si la variable "pass" est gale  un chiffre 
dfini (ici 2345), on passe  la suite du programme et on crit "OK". Sinon,
on affiche "Perdu". Dans les deux cas, aprs cela, le programme se termine,
"return 0;" tant l pour l'indiquer au compilateur. On referme le tout par
une accolade et le tour est jou.

  Il ne vous reste plus qu' compiler ce programme avec n'importe quel
compilateur C++, un tout vieux faisant parfaitement l'affaire (j'utilise
personnellement Visual C++ 5 de Micro$oft, mais bon, c'est comme vous le
sentez; de plus, celui-ci a une lgre tendance  alourdir l'xcutable).

  Donc, vous le lancez pour vrifier que a marche, et on va ensuite pouvoir 
passer au crack proprement dit. Vous le dsassemblez avec votre logiciel
prfr, ou vous lisez P.G.K. 4 si vous savez pas comment faire. Vous devriez
obtenir ceci ou quelque chose d'approchant:

+++++++++++++++++++ ASSEMBLY CODE LISTING ++++++++++++++++++
//********************** Start of Code in Object .text **************
Program Entry Point = 00404430 (essai.exe File Offset:00019A30)


:00401000 E90B000000              jmp 00401010
:00401005 CC                      int 03
:00401006 CC                      int 03
:00401007 CC                      int 03
:00401008 CC                      int 03
:00401009 CC                      int 03
:0040100A CC                      int 03
:0040100B CC                      int 03
:0040100C CC                      int 03
:0040100D CC                      int 03
:0040100E CC                      int 03
:0040100F CC                      int 03

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401000(U)
|
:00401010 55                      push ebp
:00401011 8BEC                    mov ebp, esp
:00401013 51                      push ecx

* Possible StringData Ref from Data Obj ->"Mot de passe?"
                                  |
:00401014 68509D4100              push 00419D50
:00401019 B930D14100              mov ecx, 0041D130
:0040101E E8BD040000              call 004014E0
:00401023 8D45FC                  lea eax, dword ptr [ebp-04]
:00401026 50                      push eax
:00401027 B9E0D04100              mov ecx, 0041D0E0
:0040102C E84F000000              call 00401080
:00401031 817DFC29090000          cmp dword ptr [ebp-04], 00000929
:00401038 7511                    jne 0040104B

* Possible StringData Ref from Data Obj ->"OK"
                                  |
:0040103A 68609D4100              push 00419D60
:0040103F B930D14100              mov ecx, 0041D130
:00401044 E897040000              call 004014E0
:00401049 EB0F                    jmp 0040105A

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401038(C)
|

* Possible StringData Ref from Data Obj ->"Perdu"
                                  |
:0040104B 68649D4100              push 00419D64
:00401050 B930D14100              mov ecx, 0041D130
:00401055 E886040000              call 004014E0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401049(U)
|
:0040105A 33C0                    xor eax, eax
:0040105C 8BE5                    mov esp, ebp
:0040105E 5D                      pop ebp
:0040105F C3                      ret

  Comme vous le voyez, la retranscription en ASM de votre programme peut
sembler longue, mais c'est en ralit trs court, les programmes faisant
gnralement quelques milliers de pages. L, on voit assez clairement les
phrases que le programme affiche  l'cran, ce qui nous simplifie grandement
la tache.

  D'autant plus que l'on peut voir que c'est un saut conditionnel qui nous
envoye au message "Perdu". On remonte donc l'cran de quelques lignes afin
d'aboutir, juste au dessus du message "OK",  ces deux merveilleuses lignes:

:00401031 817DFC29090000          cmp dword ptr [ebp-04], 00000929
:00401038 7511                    jne 0040104B

  Mme si vous n'avez strictement aucune connaissance en assembleur, vous
pouvez deviner que ces deux lignes l sont tout  fait primordiales. En effet,
vous pouvez voir une instruction "cmp". Alors  ce stade, vous rflchissez
profondment, vous prenez une grande inspiration, et vous cherchez dans votre
petite tte un mot franais ressemblant  "cmp". Ca y est? Non? Bon, je vous
aide: qu'est ce que le programme fait avec "pass", la variable entre par
l'utilisateur, et le chiffre 2345? Il les ... compare! Cette ligne correspond 
donc  peu prs  notre: 

if (pass==2345)

  Donc, logiquement, la ligne d'aprs examine la rponse. En fait, cette ligne
, c'est (plus ou moins) le "Else" en C++: elle envoie le programme un peu plus
loin, en fait  l'endroit o on affiche "Perdu". L'instruction employe ici
est "jne": c'est un saut conditionnel (JNE: Jump if Not Equal ou quelque chose
d'approchant) qui s'excute en cas de rponse ngative.

  Comme vous pouvez le deviner, a va tre trs simple. Car juste en-dessous
de ces deux lignes on trouve:

* Possible StringData Ref from Data Obj ->"OK"
                                  |
:0040103A 68609D4100              push 00419D60
:0040103F B930D14100              mov ecx, 0041D130
:00401044 E897040000              call 004014E0
:00401049 EB0F                    jmp 0040105A

  Et on peut remarquer que le saut ("jmp") nous envoie  la ligne suivant 
immdiatement le paragraphe o le code ne correspond pas  la valeur dfinie
dans le code source. De plus, on retrouve le mme "call" (appel) dans ce mme
paragraphe. Et donc, le saut nous envoie au paragraphe de fin, qui se termine
comme il se doit par "ret", instruction utilise pour terminer le programme.

  Ainsi ici, le crack va consister  changer subtilement (lol) le "jne
0040104B" en "jne 0040103A", c'est--dire  l'envoyer au mme endroit que si
le code tait correct.

  Pour ce faire, reportez-vous  P.G.K. 4, car d'une part, j'ai pas envie de
recommencer tout a, et d'autre part, a serait de la redite totale (et en
plus, je me repomperais moi-mme!).
  Bon, a sera tout pour le dbut de cette srie d'articles dont la ligne
directrice n'est pas encore dfinie.

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
**********************Comment faire vacuer un lyce?*************************
***********************************(NONO)*************************************
******************************************************************************

  Tout d'abord, je tiens  vous dire que l'histoire qui va suivre est tout 
fait rlle (j'en ai personnellement fait les frais).

  Attention, la mise en application de ce qui va suivre peut provoquer des
consquences graves, s'agissant de produits toxiques. Je ne saurai en aucun
cas tre responsable des dommages pouvant survenir  quiconque suite  ceci.
D'ailleurs, je ne le conseille  personne. Ceci est juste l pour votre
culture personnelle.

  En terminale S, il y au programme des TP de chimie la synthse du
paractamol (aspirine). Je n'entrerai pas dans les dtails, mais si a
intresse quelqu'un, crivez-moi. L'un des composants en est l'anhydride
actique. En fait, c'est de l'acide actique anhydre, c'est  dire sans eau.
C'est gnralement contenu dans des flacons (oui, c'est liquide, mme s'il
n'y a pas d'eau!) d'1L.

  En fait, ce qui est arriv, c'est qu'au dbut du TP, un gars a fait
tomber la bouteille (pleine!) par terre. Aussitt s'est dgag une odeur trs
dsagrable. Le prof nous a aussitt fait sortir de la salle.

  Lui-mme a t chercher un masque, et  l'aide d'une laborantine, a essay
de nettoyer. Mais il n'a pas pu rester plus d'une minute dans la salle. Nous
tions dans le couloir, et on a commenc  avoir des difficults respiratoires
, et surtout, des picotements aux yeux,  tel point que nous avons du sortir
du couloir pour aller dans la cour.

  Deux minutes aprs, le prof nous a rejoints pour nous demander d'aller
ouvrir la grille pour les pompiers qui n'allaient pas tarder. Quelques
secondes plus tard, la sonnerie d'alarme  incendie du lyce a commenc 
retentir. On a entendu une sirne au loin, et on a vu arriver 3 camions de
pompier qui ont aussitt fait vacuer le lyce, et ont fait descendre tous les
lves dans les cours infrieures.

  Les pompiers ont t rejoints par une unit d'intervention chimique et un
commandant de la capitale dpartementale. C'est  ce moment l que mon groupe
de TP a t appel par les mdecins pour que nous soyons examin en urgence,
la salle des profs ayant t rquisitionne  cette occasion. A premire vue,
personne n'avait rien de grave, mais le proviseur nous a alors dit: "vous
allez tlphoner chez vous et dire que vous avez eu un petit incident en cours
de chimie, et que vous ne savez pas  quelle heure vous allez pouvoir rentrer.
". Pendant ce temps, le lyce venait de fermer ses portes.

  Nous avons ensuite t conduits  l'hopital en urgence par les pompiers,
grillant tous les feux rouges au passage. L nous avons tous t examins par
diffrents mdecins, pour ressortir 4 heures plus tard. Le lyce avait t
rouvert 5 minutes avant le dbut des cours de l'aprs-midi, alors qu'il reste
normalement ouvert entre-midi. De plus, entre midi et deux heures, personne
n'a pu rentrer rcuprer ses affaires dans le lyce, tout le mondes les ayant
laiss  cause de l'alarme  incendie (on venait d'avoir un exercice la
semaine prcdente, ce qui a peut tre t util)e.

  Pour ceux que a intresse, je vais expliquer une des proprits de 
l'anhydridee actique, le fait que a attaque les yeux. Comme je l'ai dj dit
, le produit est en solution mais ne contient pas d'eau. Comme c'est souvent
le cas pour les produits toxiques, le danger ne vient pas tant de la solution
(quoique!) que des vapeurs dgages. En effet, ces vapeurs sont constitues
d'acide actique anhydre. Or, en contact avec l'eau de la corne, a se 
transforme en "vritable" acide actique, et forcment, de l'acide sur les
yeux, a provoque quelques "lgers" picotements...

  Tout a pour vous dire qu'il vaut mieux faire gaffe  ce que vous faites
quand vous manipulez des produits chimiques, mme en cours...

                                       NONO, nono_18_02@hotmail.com

  P.S.: Voici la formule semi-dveloppe de l'anhydride actique (ou
thanoque):

             O
           //               Il est synthtis en associant 2 molcules
      CH3-C                 d'acide actique et en enlevant la molcule H20
           \                (l'eau). D'o son nom.
            O
           /                
      CH3-C
           \\
             O

******************************************************************************
******************************Cours d'assembleur******************************
****************************(ADAM - traduit par NONO)*************************
******************************************************************************

  J'ai crit  Adam pour lui dire que je suis en train de traduire ces textes,
car il y tait spcifi qu'on n'tait pas cens les modifier, ms son email
n'est plus valide.

          ͻ
                       Cours d'Assembleur par Adam                Ŀ
                                                                   
                                 PARTIE I                          
          ͼ 
            


 Qu'est ce que l'Assembleur?
-----------------------------

L'Assembleur a t un de mes langages favoris. Non qu'il soit particulirement
facile au dbut, mais une fois qu'on s'y est habitu, on ralise combien il
est bas sur la logique.

L'Assembleur est un langage de bas niveau que vous pouvez utilisez pour
acclerer des programmes. Il consiste en instructions qui reprsentent celles
utilises par le language machine, et plus c'en est proche, plus c'est rapide.

Au dbut, avant le 8086, la programmation n'tait pas une tche facile. Quand
les premiers ordinateurs ont t construits, les programmes devaient tre
raliss en language machine, ce qui n'tait pas du tout ais, et c'est comme
a qu'est n l'Assembleur.


 Pourquoi l'utiliser?
----------------------

Comme je l'ai dit prcdemment, l'Assembleur est rapide. Il vous permet aussi
de donner des instructions au niveau des composants de l'ordinateur, et permet
un meilleur contrle et une plus grande flexibilit du PC.



 LECON 1 - Registres
---------------------

Quand vous travaillez en Assembleur, vous devez utiliser des registres. Vous
pouvez les considrer comme des variables prdfinies. Les plus communes sont
listes ci-dessous:

    AX   - l'accumulateur. Sont inclus AH et AL, les octets hauts et bas
            d'AX. Gnralement utilis dans les oprations mathmatiques et
            d'entre/sortie.

    BX   - la base. Sont inclus BH et BL. Gnralement utilise comme
            registre de base ou pointeur.

    CX   - le compteur. Sont inclus CH et CL. Souvent utilis dans les
            boucles.

    DX   - le dplacement, semblable au registre de base. Sont inclus DH et 
            DL.

Ces registres sont dfinis comme des registres gnraux, parce qu'on peut y
stocker n'importe quelles valeurs. Ce sont de plus des registres 16 bit, ce
qui veut dire qu'on peut y stocker a entier positif de 0  65535, ou un entier
relatif de -32768  32768.

En fait, le problme des octets hauts et bas de ces registres a caus une
lgre confusion dans le pass, aussi je vais essayer d'claircir un peu ce
sujet. AX a une porte de 0  FFFFh. Cela signifie qu'AH et AL vont de 0 
FFh (si vous vous sentez perdu avec l'hxadcimal, ne vous inquitez pas, le
prochain tutorial en parlera).

Maintenant, si on veut stocker 0A4Ch dans AX. AH contiendra 0Ah, et AL 4Ch.
Vous voyez le genre? C'est un concept assez important, et j'en parlerai plus
en dtails prochainement.


Les registres des segments:

Ce sont quelques autres registres que nous ne couvrirons pas pour le premier
tutorial, mais que nous verrons plus tard en dtail. Ils sont trs utiles,
mais peuvent aussi tre dangereux.

    CS - le segment de code. Le bloc de mmoire o le code est inscrit. Ne
          vous amusez pas avec celui-l si vous ne savez pas ce que vous
          faites. Je ne suis pas du tout sr que vous pouvez le modifier: je
          n'ai jamais essay.

    DS - le segment des donnes. La partie de mmoire o les donnes sont
          stockes. C'est le segment auquel le CPU se rfre gnralement
          pendant les oprations o de grands blocs de donnes sont dplacs.

    ES - le segment supplmentaire. C'est un autre pour les donnes, mais
          il est gnralement utilis pour la vido.

    SS - C'est le segment pour les piles, dans lequel le CPU stocke les  
          adresses des sous-programmes. Soyez prudent avec celui-l.

En voici quelques autres que vous utiliserez galement:

    SI - l'index source. Souvent utilis avec des instructions de dplacement
          de bloc. C'est un pointeur  l'intrieur d'un segment, souvent DS,
          qui est lu par le CPU.

    DI - l'index de destination. Celui-l aussi est souvent utilis. Encore
          un pointeur  l'intrieur d'un segment, souvent ES, crit par le
          CPU.

    BP - le pointeur de base, utilis avec le segment pour les piles. On
          ne l'utilisera pas beaucoup.

    SP - le pointeur de piles, utilis avec le segment pour les piles. Ne
          vous amusez pas avec celui-l si vous ne savez pas ce que vous
          faites.

Maintenant, vous devriez commencer  comprendre ce que sont les registres. Il
en existe des autres, et aussi des drapeaux (les "flags"), mais on ne les
tudie pas tout de suite.
   

 LECON 2 - Le jeu d'instructions 8086:
---------------------------------------

O.K., maintenant vous connaissez les registres, mais comment les utiliser, et
comment programmer en Assembleur? Dj, vous avez besoin de connatre quelques
instructions. Les suivantes peuvent tre utilises sur tous les CPU  partir
du 8086.

    MOV <dest>, <valeur> - DEPLACER. Cette instruction vous permet de
                            DEPLACER une valeur  une adresse mmoire.

                            Ex: MOV AX, 13h

                            Ceci dplacerait 13h (19 en dcimal) dans le
                            registre AX. Aussi si AX contenait auparavant 0,
                            il contiendrait dsormais 13h.

                            CECI DEPLACE UNIQUEMENT LA VALEUR DANS LE REGISTRE
                            , CA N'A AUCUNE AUTRE ACTION.

                            Ex: (En Pascal) AX := $13;

    INT <number>         - INTERROMPRE. Cette instruction gnre une
                            interruption. Vous pouvez considrer ceci comme
                            une quasi-procdure.

                            Ex: INT 10h

                            Gnrerait une interruption 10h (16 en dcimal).
                            Maintenant, son action dpendrait du contenu du
                            registre AH, et aussi d'autres choses. Par exemple
                            , si AX = 13h et si une interruption 10h a t
                            gnre, la vido passerait en 320x200x256.

                            Plus prcisment:

                            AH vaudrait 00 - lance la sous-fonction "mode", et
                            AL vaudrait 13h - mode graphique 320x200x256.

                            Cependant, si AH = 2h, et si une interruption
                            16h tait gnre, cela ordonnerait au CPU de
                            vrifier si un appui sur une touche est prsent
                            dans le cache clavier.

                            Si AH = 2h, et BH = 0h et une interruption 10h
                            tait gnre, le CPU dplacerait le cursur en DL
                            pour les X et en DH pour les Y.

                            Gardez  l'esprit qu'AH contient les fonctions 
                            lancer, et les autres registres peuvent contenir
                            n'importe quelle donne ncessaire.

                            NE VOUS INQUIETEZ PAS A CE SUJET MAINTENANT, ON LE
                            LE VERRA PLUS EN DETAILS PLUS TARD.

    ADD <dest> <valeur>  - AJOUTE. Cette instruction ajoute un nombre  la
                            valeur de destination.

                            Ex: MOV AX, 0h  ; AX vaut maintenant 0h
                                ADD AX, 5h  ; AX vaut maintenant 5h
                                ADD AX, 10h ; AX vaut maintenant 15h

                            Plutt simple, non?

    SUB <dest> <valeur>  - SOUSTRACTE. Je pense que vous devinez l'effet.

                            Ex: MOV AX, 13h  ; AX vaut 13h (19 en dc)
                                SUB AX, 5h   ; AX vaut 0Eh (14 en dc)

    DEC <registre>       - DIMINUE quelque chose.

                            Ex: MOV AX, 13h  ; AX vaut maintenant 13h
                                DEC AX       ; AX vaut maintenant 12h

    INC <registre>       - AUGMENTE quelque chose.

                            Ex: MOV AX, 13h  ; Prenez un exemple
                                INC AX       ; AX = AX + 1

    JMP <adresse>        - VA  une adresse (mmoire ou non).

                            Ex: JMP 020Ah    ; Va  l'instruction en 020Ah
                                JMP @MyLabel ; Va  @MyLabel.

                            NE VOUS INQUIETEZ PAS SI C'EST UN PEU CONFUS - IL
                            Y A PIRE! IL Y A 28 INSTRUCTIONS DE SAUT A SAVOIR,
                            PEUT-ETRE PLUS. NOUS LES VERRONS PLUS TARD.
                            
    CALL <procdure>     - APPELLE une sous-fonction.

                            Ex: Procedure MyProc;

                                Begin   { MyProc }
                                   { ... }
                                End;    { MyProc }

                                Begin   { Main }
                                   Asm
                                      CALL MyProc   ; Devinez ce que a fait!
                                   End;
                                End.

                            OR: CALL F6E0h  ; Appelle la fonction en F6E0h

    LOOP <label>         - Lance une BOUCLE pour une priode.

                            Ex: MOV CX, 10h  ; C'est pourquoi CX est
                                             ; appel le COMPTEUR. 10h = 16

                                @MyLabel:

                                ; instructions
                                ; encore des instructions

                                LOOP @MyLabel   ; Jusqu' CX = 0
                                                ; Note: CX est diminu    
                                                ; chaque fois. Ne le faites 
                                                ; pas vous-mme.

                            ; CELA RECOMMENCERA 16 fois - 10 en hxa.


    LODSB                - Charge un octet
     LODSW                - Charge un word
     STOSB                - Stocke un octet
     STOSW                - Stocke un word

     Ces instructions sont utilises pour stocker ou charge quelque chose en
     mmoire. Le registre ES:SI (vous vous rappelez: SI est l'index source?)
     pointe  l'endroit d'o nous voulons les donnes, et ES:DI pointe  celui
     o nous voulons stocker une information.

     Maintenant, imaginez que nous avons la rpartition suivante en mmoire:

     Adresse Mmoire  06  07  08  09  10  11  12
     
     Valeur           50  32  38  03  23  01  12

     Quand on utilise LODSB ou STOSB, cela affiche ou crit un nombre en AL.
     Si ES:SI pointait  07 et si on a excut LODSB, AL serait maintenant
     gal  32.

     Maintenant, si on pointe ES:DI en 11, et on met 50 dans le registre AL,
     et ensuite si on excute STOSB, le rsultat serait le suivant:

     Adresse Mmoire  06  07  08  09  10  11  12
     
     Valeur           50  32  38  03  23  50  12

     NOTE:  Quand on utilise LODSB/STOSB, on utilise automatiquement AL. Ceci
            parceque nous utilisions un nombre 8 bit (un octet). On peut
            stocker des nombres 8 bit dans AL, AH ou AX, mais on ne peut pas
            stocker des nombres 16 bit dans AH ou AL parce que ce sont des
            REGISTRES             8 BIT.

            Donc, quand on utilise LODSW ou STOSW, on doit utiliser AX et pas
            AL, si on veut travailler avec des valeurs 16 bit.


    MOVSB - Dplace un octet
     MOVSW - Dplace un word

     Comme exemple, on va prendre un octet de DS:SI et l'envoyer en ES:DI.

     En DS:SI:

     Adresse Mmoire  06  07  08  09  10  11  12
     
     Valeur           50  32  38  03  23  50  12


     En ES:DI:

     Adresse Mmoire  06  07  08  09  10  11  12
     
     Valeur           10  11  20  02  67  00  12

     Si on pointe DS:SI en 07, ES:SI en 11 et si on excute MOVSB, la
     rpartition mmoire en ES:DI sera la suivante:        

     En ES:DI:

     Adresse Mmoire  06  07  08  09  10  11  12
     
     Valeur           10  11  20  02  67  32  12


     J'ESPERE QUE VOUS AVEZ COMPRIS EN GROS. CEPENDANT, IL EST CLAIR QUE CA
     N'EST PAS SIMPLE. LES ADRESSES MEMOIRES NE SONT PAS EN LIGNES, COMME JE
     LE SOUHAITERAIS. QUAND VOUS MODIFIEZ EN MEMOIRE, VOUS DEVREZ TRAVAILLER
     AVEC DES ADRESSES EN OCTET.

    REP - REPETE le nombre de fois spcifi dans le registre CX. Un REP
           devant un MOVSB/LODSB/STOSB provoquerait sa rptition:

           Si CX = 5, et
           si ES:DI pointait en 1000:1000h,

           ensuite REP STOSB crirait 5 fois de suite en 1000:1000h ce qui
           tait dans le registre AL.

                                       Adam Hyde, blackcat@faroc.com.au

******************************************************************************
***************************Cours d'assembleur (suite)*************************
****************************(ADAM - traduit par NONO)*************************
******************************************************************************


          ͻ
                       Cours d'Assembleur par Adam                Ŀ
                                                                   
                                 PARTIE II                         
          ͼ 
            



 LESCON 3 - Segments et Offsets
--------------------------------

Avant d'entrer dans le monde compliqu des segments et des offsets, il y a
quelques dfinitions que vous devriez connatre.

    Le BIT - la plus petite donne que nous pouvons utiliser. Un bit - un
     huitime d'octet - peut tre soit un 1 soit un 0. Ce qui peut donner des
     nombres en BINAIRE ou BASE 2.

     Ex:     0000 = 0   0100 = 4   1000 = 8    1100 = 12   10000 = 16
             0001 = 1   0101 = 5   1001 = 9    1101 = 13   ...Je pense que
             0010 = 2   0110 = 6   1010 = 10   1110 = 14   vous avez compris
             0011 = 3   0111 = 7   1011 = 11   1111 = 15   ...

    Un NIBBLE, ou quatres bits. Un nibble peut avoir une valeur maximale de
     1111 soit 15 en dcimal. C'est l qu'intervient l'hxadcimal. L'hxa est
     bas sur 16 chiffres (0-15), et quand on crit en hxa, on utilise les
     "caractres" suivants:

     0 1 2 3 4 5 6 7 8 9 A B C D E F

     IMPORTANT >>> Un nibble peut aller jusqu' Fh <<< IMPORTANT

    L'OCTET - ce que nous utiliserons le plus. Un octet fait 8 bits - soit 2
     nibbles, et c'est la seule donne que vous pourrez mettre dans un des
     registres 8 bit: AH, AL, BH, BL...

     Un octet a une valeur maximal de 255, soit 11111111 en binaire, ou FFh
     en hxadcimal.

    Le WORD - un mot est un nombre 16 bit, et peut contenir un nombre jusqu'
     65535. C'est 1111111111111111 en binaire, soit FFFFh en hxa.

     Note:  Parcequ'un word est constitu de quatre nibbles, il est aussi
            reprsent par quatre valeurs hxadcimales.

     Note:  C'est un nombre 16 bit, et il correspond aux registres 16 bit.
            Ces sont  AX, BX, CX, DX, DI, SI, BP, SP, DS, ES, SS  et IP.

    Le DWORD, ou double word consiste en 2 words ou 4 octets ou 8 nibbles ou
     32 bits. On n'utilisera pas beaucoup de dwords dans ces tutorials, mais
     nous les verrons plus tard quand nous verrons la PROGRAMMATION 32-BIT.

     Un DWORD peut aller de 0  4 294 967 295, soit FFFFFFFFh, ou
     11111111111111111111111111111111.

     Le DWORD correspond aussi aux registres 32 bit supplmentaires, soit EAX,
     EBX, ECX, EDX, EDI, ESI, EBP, ESP et EIP.

    Le KILO-OCTET est 1024 octets, et non 1000. C'est gal  256 dwords, 512
     words, 1024 octets, 2048 nibbles ou 8192 BITS.

    Le MEGAOCTET, ou 1024 kilo-octets. C'est 1 048 576 octets ou 8 388 608
     bits.

Maintenant que nous avons vu les dfinitions, examinons la structure des
registres. Nous avons dit que AL et AH taient des registres 8 bit, donc ils
devraient logiquement tre comme ceci:

                    AH                                 AL
           Ŀ              Ŀ
             00000000                  00000000  


Dans ce cas, AH et AL valent tous les deux 0, SOIT 00h et 00h. Aussi, pour
parler d'AX on dira: AX = 00h + 00h. Quand je dis "+", je veux dire "avec", et
pas AX = AH PLUS AL.

Donc, si AH = 00000011 et AL = 0000100, pour utiliser AX nous devrions faire
la chose suivante:

1) Prendres les valeurs hxa pour AH et AL.

   00000011 = 03h   00010000 = 10h

2) Les combiner.

   AX = AH  + AL
   AX = 03h + 10h
   AX = 0310h

Et voil. Pas trop difficile.

OK, maintenant voyons voir les registres 16 bit:


                                 AX
                     Ŀ
                                            

                    AH                       AL
           Ŀ    Ŀ
             00000000        00000000  

L nous voyons que AX = 00000000 et 00000000, soit 0000000000000000.


Enfin, voyons  quoi ressemble un registre 32 bit:

              Ŀ
                                    EAX                       
              Ŀ                        
                         AX                                  
              Ĵ                        
               00000000    00000000  00000000     00000000  
                  AH          AL                            
              

J'espre que a n'a pas l'air trop difficile. Une fois que vous avez compris
a, vous tes prts pour les SEGMENTS et les OFFSETS.


 Une Architecture Segmente
----------------------------

Il y a longtemps, quand IBM a cre le premier PC, les programmes ne pouvaient
pas dpasser un mga - en fait, le premier XT avait 64K de RAM! Ensuite, 
voyant que les constructeurs du XT n'envisageaient pas de gros programmes, ils
ont dcid de diviser la mmoire en SEGMENTS, petits morceaux de RAM que l'on
pouvait remplir avec juste un cran virtuel pour le mode 320*200*256.

Bien sr, il tait possible d'accder  plus d'un mga de RAM, mais il fallait
le diviser en segments pour l'utiliser, et c'tait le problme. Maintenant,
avec la programmation 32 bit, on peut avoir jusqu' 4 gigas de RAM sans
avoir recours aux segments, mais c'est une autre histoire.

Les segments et les offsets sont juste une mthode pour spcifier une adresse
mmoire.


Ex:   3CE5:502A

      ^^^^ ^^^^
      SEG  OFS

OK, voici les caractristiques:


Un OFFSET  = SEGMENT X 16
Un SEGMENT = OFFSET  / 16

Quelques registres de segments:

CS, DS, ES, SS et FS, GF - Note: Les 2 derniers sont des registres 386+.

Quelques registres d'offsets:

BX, DI, SI, BP, SP, IP   - Note: En mode protg, on peut utiliser n'importe
                                 quel registre comme registre d'offset - SAUF
                                 IP.


Quelques segments et offsets communs:

    CS:IP - Adresse du code courant.
    SS:SP - Adresse de la position courante de la pile.

    NOTE: NE FAITES PAS N'IMPORTE QUOI AVEC CEUX-LA!

Donc quand nous nous rfrons aux segments et offsets, c'est de la forme:

SEGMENT:OFFSET

Un bon exemple serait:

A000:0000 - qui correspond au coin en haut  gauche de l'cran en VGA en
            320x200x256.

          

 

Ouf! Ca fait beaucoup pour un second tutorial. Mais on n'a pas encore fini. 
AX, AH, AL sont des concepts que vous pouvez ne pas avoir encore assimil,
aussi lisez a:

    MOV   AX, 0     ; AX = 0
    MOV   AL, 0     ; AL = 0
    MOV   AH, 0     ; AH = 0

    MOV   AL, FFh   ; AL = FFh
                    ; AX = 00FFh
                    ; AH = 00h

    INC   AX        ; AX = AX + 1

                    ; AX = 0100h
                    ; AH = 01h
                    ; AL = 00h

    MOV   AH, ABh   ; AX = AB00h
                    ; AH = ABh
                    ; AL = 00h


Compris?


 

 La Pile
---------

La pile est trs utile. Considrez-la comme une pile de feuilles. Si vous
mettez quelque chose en haut de la pile, ce sera le premier truc que vous
prendrez.

Quand vous ajoutez quelque chose  la pile, le pointeur de la pile est
DIMINUE, et quand vous enlevez, il est AUGMENTE. Pour mieux comprendre,
regardez le diagramme suivant:

    Ŀ
         La PILE      
    Ĵ
                            <<< Quand vous mettez un octet sur la pile   
                               (avec PUSH), il va ici - le dernier en
                               premire position.
                     
                     
                     


      SP                    <<< Le pointeur de la pile descend.  
    


Et en pratique: 


   MOV   AX, 03h   ; AX = 03h
   PUSH  AX        ; Met AX sur la pile    

   MOV   AX, 04Eh  ; AX = 04Eh

                   ; Peu importe...pourquoi pas une somme?

   POP   AX        ; AX = 03h

Ou:

   MOV   AX, 03h   ; AX = 03h
   PUSH  AX        ; Ajoute AX  la pile

   MOV   AX, 04Eh  ; AX = 04Eh

                   ; Peu importe...pourquoi pas une somme?

   POP   BX        ; BX = 03h


Vous venez d'apprendre deux nouvelles instructions:

    PUSH <registre>   - Met quelque chose en haut de la pile, et

    POP <registre>    - l'enlve.


C'est tout ce que vous avez besoin de savoir  propos de la pile - pour le
moment.


 

Et enfin, quelques petites procdures qui rsument tout a. Remarquez que les
commentaires ont  t VOLONTAIREMENT ENLEVES. C'est votre boulot d'essayer
et de commenter ceci, et par "commenter", je veux dire crire ce que chaque
instruction fait. Remarquez aussi que quelques nouvelles instructions sont
introduites ici.


Procedure ClearScreen(A : Byte; Ch : Char);   Assembler;

Asm     { ClearScreen }
  mov   ax, 0B800h
  mov   es, ax
  xor   di, di
  mov   cx, 2000
  mov   ah, A
  mov   al, &Ch
  rep   stosw
End;    { ClearScreen }


Procedure CursorXY(X, Y : Word);   Assembler;

Asm    { CursorXY }
   mov   ax, Y
   mov   dh, al
   dec   dh
   mov   ax, X
   mov   dl, al
   dec   dl
   mov   ah, 2
   xor   bh, bh
   int   10h
End;    { CursorXY }


Procedure PutPixel(X, Y : Integer; C : Byte; Adr : Word);   Assembler;

Asm     { PutPixel }
   mov   ax, [Adr]
   mov   es, ax
   mov   bx, [X]
   mov   dx, [Y]
   xchg  dh, dl
   mov   al, [C]
   mov   di, dx
   shr   di, 2
   add   di, dx
   add   di, bx
   stosb
End;    { PutPixel }


Procedure Delay(ms : Word);   Assembler;

Asm     { Delay }
   mov   ax, 1000
   mul   ms
   mov   cx, dx
   mov   dx, ax
   mov   ah, 86h
   int   15h
End;    { Delay }

                                       Adam Hyde, blackcat@faroc.com.au

******************************************************************************
**************************Quoi de neuf sur la Scne?**************************
***********************************(NONO)*************************************

  Bon, comme a a l'air d'tre,  la mode, je vais vous parler un peu de la
Scne underground francophone. Pour ceux qui ne le sauraient pas (et ils sont
sans doute plutt nombreux), la Scne est en fait constitue par tous ceux
qui participent, de faon plus ou moins active, au mouvement underground.
C'est  dire tous les hackers, phreakers, crackers, et sans oublier tous les
groupes tel P.G.K..

  P.G.K., donc, a t cr il y a un peu plus de 6 mois (un peu moins d'un an)
, suite  la disparition de l'excellent (on ne le dira jamais assez) Total
Control, car la GRC tait un peu trop aprs Err418, le crateur (d'ailleurs,
il est  noter que bien que le numro 15 devait tre le dernier TC, sont
apparus rcemment les 16 et 17, soi-disant crits par Err418. Personnellement,
j'en doute, car son e-mail a mystrieusement chang, et de plus, je trouve ces
numros largement infrieurs aux "vrais".)

  A l'poque de TC, il n'y avait presque plus de groupes qui existaient encore
et publiaient des e-mags. Regardez aujourd'hui autour de vous: il existe plus
d'une dizaine d'e-zines paraissant rgulirement (ou presque).

  D'o vient cette recrudescence soudaine? Certains disent que c'est peut-tre
d aux mdias: je m'explique. En effet, je sais pas si vous avez remarqu,
mais, avec l'approche de l'an 2000 (et de son fameux bug), ils recommencent 
parler du piratage, comme ils disent, aux infos. Pas plus tard qu'hier, je
suis pass 30 secondes devant les infos, et c'tait un reportage sur le
carding.

  A mon avis, l'apparition du fanzine "le Virus informatique" en kiosque (et
surtout de ses hors-srie "Pirate mag") y est pour quelque chose. Ce zine se
veut ouvertement underground, mais mme dans ses hors srie, c'est pas l
que les newbies vont russir  apprendre vritablement quelque chose, vu le
faible niveau (exemple: comment cracker un logiciel? "il vous faut un dbugger
et une bonne connaissance de l'assembleur. Vous recherchez ensuite la
protection dans le programme et vous remplacez par des "nop".". C'est sr qu'
avec a, on devient un expert en cracking).

  Ainsi cette soudaine augmentation du nombre de participants  la Scne ne
peut tre que bnfique pour cette dernire, mme si une grande partie sont
dignes de parfaits lamerz (je les citerai pas, mais ceux qui se permettent de
sauvagement critiquer des groupes ds leur premier e-zine, sont pour moi pas
franchement brillants, mme si le reste de leur e-mag est pas si mal).

                                       NONO, nono_18_02@hotmail.com

******************************************************************************
**********************************Conclusion**********************************
******************************************************************************

  Pour pas changer, ce numro sort hyper en retard. Alors bon, on va dire qu'
partir de maintenant, P.G.K. sortira quand il sera prt, aucune date ne sera
fixe  l'avance. Celui-ci est surtout du au fait que je viens de passer le
bac (l, on est le 17 juin, c'est  dire le lendemain de la dernire preuve
... enfin, sauf si je vais au rattrapage :-( ).
  Pareil pour le site, il sera mis  jour de faon trs alatoire. Je sais,
c'est pas vraiment srieux, mais j'ai pas du tout le temps. Enfin, je vais
essayer de m'y remettre pendant les vacances.
  Oh, j'ai failli oublier de vous dire que Cybz a fait un article sur UltraHLE
dont je vous ai parl le mois dernier (l'mulateur Ultra 64), article paru
dans l'e-mag ponyme (Cybz 4), et que cet excellent article est en fait un
complment au mien.
  Donc jetez-vous dessus. D'ailleurs, je dois le mettre sur le site d'ici
bientt, enfin ds que j'en trouve le temps...

                                       NONO, nono_18_02@hotmail.com
                                                                
******************************************************************************
***********************************GREETINGS**********************************
******************************************************************************

GG, PLUGIN, Grateful, Skate-Net, Bast, Janice, |hiha|, DP, Alex, Tom, Max,
CYBZ, et bien sr tous ceux qui tranent sur #houseofwarez, #warezfrancais et
#hack.fr (en undernet)...  

