Copy Link
Add to Bookmark
Report

PGK Issue 7

eZine's profile picture
Published in 
PGK
 · 11 Oct 2020

  

******************************************************************************
*******************************P.G.K nø7: 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 mˆme des lois qui tentent vainement de r‚gir
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 … r‚aliser les actions
d‚crites ci-dessous, mais les d‚crivent uniquement … titre informatif.
Cependant, les lois ne sont bien ‚videmment pas les mˆmes dans tous les
pays, et donc, si chez vous, votre droit d'acc‚s aux informations que vous
pourriez trouver ici est encore plus restreint qu'en France, vous vous
devez de prendre vos responsabilit‚s.
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 "d‚responsabilisation" 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: aprŠs
tout, rien ne vous invite … lire, croire, et encore moins … reproduire les
actions d‚crites ici.
De plus, bien que vous pouvez trouver ici des r‚f‚rences … des substances
qui peuvent ˆtre prohib‚es dans votre pays (notamment des substances
psychotropes), et qui le sont h‚l…s ici en France, cela ne constitue en aucun
cas un encouragement de quelque nature que ce soit … consommer ou mˆme
cultiver ces substances qui peuvent avoir des effets parfois incontr“lables,
et qui peuvent s'av‚rer quelquefois dangereux (surtout pour ceux qui n'en
ont pas l'habitude).
Pour finir, en continuant votre lecture, vous acceptez ainsi de prendre
vos responsabilit‚s et ainsi, en cas de problŠmes 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 impliqu‚s dans vos problŠmes...

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

J'ai vraiment du mal … croire que je suis en train de taper ce num‚ro sur un
un 386 avec 2 Mo de Ram et un ‚cran en noir et blanc (avec quand mˆme 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 livr‚s avec le DOS en QBasic). Tant mieux, car j'ai un
peu d‚laiss‚ 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
reconnaŒtre que c'est vrai, mais l'ambition de P.G.K. n'a jamais ‚t‚ d'ˆtre
entiŠrement ax‚ sur ces techniques, mais plut“t sur tout ce qui peut concerner
l'underground. Et … part … quelques exceptions prŠs, 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 fa‡on approfondie. Mais si vous voulez r‚‚llement des
articles pouss‚s sur ces sujets, vous avez qu'… les ‚crire et me les envoyer.
Ou alors, ‚crivez-moi pour me demander des trucs vraiment pr‚cis 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 lyc‚e? (NONO)
- Cours d'Assembleur (Adam - traduit par NONO)
- Cours d'Assembleur (suite) (Adam - traduit par NONO)
- Quoi de neuf sur la scŠne? (NONO)

Bon, comme vous pouvez le voir, encore un num‚ro sans Johann__3. H‚l…s.
Souhaitons qu'il revienne bient“t.

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 m‚chant, mais
l'html, c'est quand mˆme 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‚ juv‚nile … la Fnac (agitateur mon cul) et arrˆtez de vous la
p‚ter codeurs! C'est pas ‡a qui vous fera connaŒtre, seuls ceux qui ont fait
leurs preuves ont leur place sur la scŠne!
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 fenŠtres s'ouvrent de nulle part, ‡a sera la suite
logique des choses!! vous en avez d‚j… trop fait....

WaReZ RuLeZ, BiLl SuCkS, LiNuX uBeR aLlEs, Bo Is InSiDe U

Allez arrˆter de pointer vers void et motivez-vous pour faire des choses
plus UlTiMe !!
h‚h‚

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

PS: y vous manque un lien important!!!!!!........
scene.org! Essayez, vous appr‚cierez...

________ _______________
\°`'~., 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 re‡u de courrier
un poil agressif, avec toi je suis servi. Pas que tu sois vraiment m‚chant,
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 pr‚tention de rassembler les meilleurs
codeurs, loin de l…. Bien au contraire mˆme, puisqu'au d‚part, on n'est que
deux, moi-mˆme 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'
arrˆte l…. Il est pas du tout l… pour t'‚pater toi ou tes petits copains.
Et pis c'est s–r que Back Orifice, c'est vachement ElItE comme truc, hein
FuLlA. Parce que je suis s–r que toi et tes petits potes, vous vous consid‚rez
comme des HaCkErS (comme tu l'‚cris s–rement) parce qu'une fois par mois, vous
vous r‚unnissez sur le net pour formater le disque dur d'un pauvre LaMeRz, non
? Ha, c'est s–r, chacun a sa propre id‚e 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 gˆne 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 aper‡u 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 r‚pondre de mon mieux … tes
questions, mais autant te pr‚venir, je crains de ne guŠre pouvoir t'aider. Le
CIH est une v‚ritable saloperie qui infecte le BIOS du PC et peut mˆme faire
griller quelques composants (en poussant la fr‚quence de la carte mŠre au
maximum: une sorte d'overclockage volontairement trop puissant). Le plus
connu est sans doute Tchernorbyl, qui a ‚t‚ hyper m‚diatis‚ et qui provoquait
de s‚rieux d‚gats. Tu ne d‚cris pas les sympt“mes, ce qui aurait peut ˆtre
permis d'identifier plus pr‚cis‚ment le virus. Quand au verdict de McAffee
concernant tes cds (achet‚s!!! Je tiens … te f‚liciter. Si, si, s‚rieusement
...), cela arrive relativement souvent (autrement dit de temps en temps). Ne
t'inquŠte pas, c'est probablement une fausse alerte. Sur ce, a+!]

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

Bon, alors on va examiner un ensemble extrˆmement simple de crack, … partir
d'un programme que l'on va nous-mˆme ‚crire en C++. Vous me direz: quel
interˆt de cracker un programme que l'on a ‚crit? D‚j…, c'est beaucoup plus
simple … comprendre. De plus, ce cours s'adresse aux d‚butants 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 d‚taill‚s possibles.

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

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

Ce programme demande donc un mot de passe et confirme ou infirme la r‚ponse,
le code ‚tant d‚fini dans le code source (ici, 2345, mais vous pouvez changer).
Comme vous voyez, et comme je vous l'avais annonc‚, c'est un programme
extrˆmement simple, et il ne vous faudra pas plus de quelques secondes pour le
cracker, mais ‡a vous permettra d'acqu‚rir 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 premiŠre ligne appelle le fichier "iostream.h" qui contient toutes les
instructions g‚rant les entr‚es-sorties (Input-Output) en C++. Ce fichier est
normalement situ‚ dans les r‚pertoire Include de votre compilateur, ou tout
du moins dans un "Path" d‚fini dans l'autoexec.bat. C'est lui qui vous permet
d'afficher … l'‚cran et aussi de recueillir la r‚ponse de l'utilisateur.

Ensuite, la deuxiŠme ligne sert … d‚buter la fonction principale: elle se
trouve dans tous les programmes en C++, … part quelques rares exceptions. L'
accolade sert donc … d‚buter cette fonction.

La troisiŠme ligne sert … cr‚er une variable appel‚e "pass". Ici, il s'agira
d'un entier, compris entre 0 et 65256 (… peu prŠs). 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 utilis‚e pour afficher
ceci, il y a "out", comme dans "output". Une fois ceci fait, on attend une
r‚ponse de l'utilisateur, que l'on enregistre … l'aide de l'instructrion cin
("input") dans la variable "pass".

Ensuite, on procŠde au test: si la variable "pass" est ‚gale … un chiffre
d‚fini (ici 2345), on passe … la suite du programme et on ‚crit "OK". Sinon,
on affiche "Perdu". Dans les deux cas, aprŠs 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 l‚gŠre tendance … alourdir l'‚x‚cutable).

Donc, vous le lancez pour v‚rifier que ‡a marche, et on va ensuite pouvoir
passer au crack proprement dit. Vous le d‚sassemblez avec votre logiciel
pr‚f‚r‚, 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 r‚alit‚ trŠs court, les programmes faisant
g‚n‚ralement 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

Mˆme 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 r‚fl‚chissez
profond‚ment, vous prenez une grande inspiration, et vous cherchez dans votre
petite tˆte un mot fran‡ais ressemblant … "cmp". Ca y est? Non? Bon, je vous
aide: qu'est ce que le programme fait avec "pass", la variable entr‚e par
l'utilisateur, et le chiffre 2345? Il les ... compare! Cette ligne correspond
donc … peu prŠs … notre:

if (pass==2345)

Donc, logiquement, la ligne d'aprŠs examine la r‚ponse. 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 employ‚e ici
est "jne": c'est un saut conditionnel (JNE: Jump if Not Equal ou quelque chose
d'approchant) qui s'ex‚cute en cas de r‚ponse n‚gative.

Comme vous pouvez le deviner, ‡a va ˆtre trŠs 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
imm‚diatement le paragraphe o— le code ne correspond pas … la valeur d‚finie
dans le code source. De plus, on retrouve le mˆme "call" (appel) dans ce mˆme
paragraphe. Et donc, le saut nous envoie au paragraphe de fin, qui se termine
comme il se doit par "ret", instruction utilis‚e 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 mˆme 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-mˆme!).
Bon, ‡a sera tout pour le d‚but de cette s‚rie d'articles dont la ligne
directrice n'est pas encore d‚finie.

NONO, nono_18_02@hotmail.com

******************************************************************************
**********************Comment faire ‚vacuer un lyc‚e?*************************
***********************************(NONO)*************************************
******************************************************************************

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

Attention, la mise en application de ce qui va suivre peut provoquer des
cons‚quences 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 synthŠse du
parac‚tamol (aspirine). Je n'entrerai pas dans les d‚tails, mais si ‡a
int‚resse quelqu'un, ‚crivez-moi. L'un des composants en est l'anhydride
ac‚tique. En fait, c'est de l'acide ac‚tique anhydre, c'est … dire sans eau.
C'est g‚n‚ralement contenu dans des flacons (oui, c'est liquide, mˆme s'il
n'y a pas d'eau!) d'1L.

En fait, ce qui est arriv‚, c'est qu'au d‚but du TP, un gars a fait
tomber la bouteille (pleine!) par terre. Aussit“t s'est d‚gag‚ une odeur trŠs
d‚sagr‚able. Le prof nous a aussit“t fait sortir de la salle.

Lui-mˆme 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 difficult‚s respiratoires
, et surtout, des picotements aux yeux, … tel point que nous avons du sortir
du couloir pour aller dans la cour.

Deux minutes aprŠs, 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 lyc‚e a commenc‚ …
retentir. On a entendu une sirŠne au loin, et on a vu arriver 3 camions de
pompier qui ont aussit“t fait ‚vacuer le lyc‚e, et ont fait descendre tous les
‚lŠves dans les cours inf‚rieures.

Les pompiers ont ‚t‚ rejoints par une unit‚ d'intervention chimique et un
commandant de la capitale d‚partementale. C'est … ce moment l… que mon groupe
de TP a ‚t‚ appel‚ par les m‚decins pour que nous soyons examin‚ en urgence,
la salle des profs ayant ‚t‚ r‚quisitionn‚e … cette occasion. A premiŠre vue,
personne n'avait rien de grave, mais le proviseur nous a alors dit: "vous
allez t‚l‚phoner 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 lyc‚e 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‚ examin‚s par
diff‚rents m‚decins, pour ressortir 4 heures plus tard. Le lyc‚e avait ‚t‚
rouvert 5 minutes avant le d‚but des cours de l'aprŠs-midi, alors qu'il reste
normalement ouvert entre-midi. De plus, entre midi et deux heures, personne
n'a pu rentrer r‚cup‚rer ses affaires dans le lyc‚e, tout le mondes les ayant
laiss‚ … cause de l'alarme … incendie (on venait d'avoir un exercice la
semaine pr‚c‚dente, ce qui a peut ˆtre ‚t‚ util)e.

Pour ceux que ‡a int‚resse, je vais expliquer une des propri‚t‚s de
l'anhydridee ac‚tique, le fait que ‡a attaque les yeux. Comme je l'ai d‚j… 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 d‚gag‚es. En effet, ces vapeurs sont constitu‚es
d'acide ac‚tique anhydre. Or, en contact avec l'eau de la corn‚e, ‡a se
transforme en "v‚ritable" acide ac‚tique, et forc‚ment, de l'acide sur les
yeux, ‡a provoque quelques "l‚gers" picotements...

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

NONO, nono_18_02@hotmail.com

P.S.: Voici la formule semi-d‚velopp‚e de l'anhydride ac‚tique (ou
‚thano‹que):

O
// Il est synth‚tis‚ en associant 2 mol‚cules
CH3-C d'acide ac‚tique et en enlevant la mol‚cule 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 sp‚cifi‚ 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 particuliŠrement
facile au d‚but, mais une fois qu'on s'y est habitu‚, on r‚alise combien il
est bas‚ sur la logique.

L'Assembleur est un langage de bas niveau que vous pouvez utilisez pour
acc‚lerer des programmes. Il consiste en instructions qui repr‚sentent celles
utilis‚es par le language machine, et plus c'en est proche, plus c'est rapide.

Au d‚but, avant le 8086, la programmation n'‚tait pas une tƒche facile. Quand
les premiers ordinateurs ont ‚t‚ construits, les programmes devaient ˆtre
r‚alis‚s 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 pr‚c‚demment, l'Assembleur est rapide. Il vous permet aussi
de donner des instructions au niveau des composants de l'ordinateur, et permet
un meilleur contr“le et une plus grande flexibilit‚ du PC.



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

Quand vous travaillez en Assembleur, vous devez utiliser des registres. Vous
pouvez les consid‚rer comme des variables pr‚d‚finies. Les plus communes sont
list‚es ci-dessous:

þ AX - l'accumulateur. Sont inclus AH et AL, les octets hauts et bas
d'AX. G‚n‚ralement utilis‚ dans les op‚rations math‚matiques et
d'entr‚e/sortie.

þ BX - la base. Sont inclus BH et BL. G‚n‚ralement utilis‚e comme
registre de base ou pointeur.

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

þ DX - le d‚placement, semblable au registre de base. Sont inclus DH et
DL.

Ces registres sont d‚finis comme des registres g‚n‚raux, 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 problŠme des octets hauts et bas de ces registres a caus‚ une
l‚gŠre confusion dans le pass‚, aussi je vais essayer d'‚claircir un peu ce
sujet. AX a une port‚e de 0 … FFFFh. Cela signifie qu'AH et AL vont de 0 …
FFh (si vous vous sentez perdu avec l'h‚xad‚cimal, ne vous inqui‚tez 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 d‚tails 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 d‚tail. Ils sont trŠs utiles,
mais peuvent aussi ˆtre dangereux.

þ CS - le segment de code. Le bloc de m‚moire 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 s–r que vous pouvez le modifier: je
n'ai jamais essay‚.

þ DS - le segment des donn‚es. La partie de m‚moire o— les donn‚es sont
stock‚es. C'est le segment auquel le CPU se r‚fŠre g‚n‚ralement
pendant les op‚rations o— de grands blocs de donn‚es sont d‚plac‚s.

þ ES - le segment suppl‚mentaire. C'est un autre pour les donn‚es, mais
il est g‚n‚ralement utilis‚ pour la vid‚o.

þ 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 d‚placement
de bloc. C'est un pointeur … l'int‚rieur 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'int‚rieur 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? D‚j…, vous avez besoin de connaŒtre quelques
instructions. Les suivantes peuvent ˆtre utilis‚es sur tous les CPU … partir
du 8086.

þ MOV <dest>, <valeur> - DEPLACER. Cette instruction vous permet de
DEPLACER une valeur … une adresse m‚moire.

Ex: MOV AX, 13h

Ceci d‚placerait 13h (19 en d‚cimal) dans le
registre AX. Aussi si AX contenait auparavant 0,
il contiendrait d‚sormais 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 g‚nŠre une
interruption. Vous pouvez consid‚rer ceci comme
une quasi-proc‚dure.

Ex: INT 10h

G‚n‚rerait une interruption 10h (16 en d‚cimal).
Maintenant, son action d‚pendrait du contenu du
registre AH, et aussi d'autres choses. Par exemple
, si AX = 13h et si une interruption 10h a ‚t‚
g‚n‚r‚e, la vid‚o passerait en 320x200x256.

Plus pr‚cis‚ment:

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 g‚n‚r‚e, cela ordonnerait au CPU de
v‚rifier si un appui sur une touche est pr‚sent
dans le cache clavier.

Si AH = 2h, et BH = 0h et une interruption 10h
‚tait g‚n‚r‚e, le CPU d‚placerait 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 donn‚e n‚cessaire.

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

Plut“t simple, non?

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

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

þ 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 (m‚moire 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 <proc‚dure> - 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 p‚riode.

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-mˆme.

; CELA RECOMMENCERA 16 fois - 10 en h‚xa.


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

Ces instructions sont utilis‚es pour stocker ou charge quelque chose en
m‚moire. Le registre ES:SI (vous vous rappelez: SI est l'index source?)
pointe … l'endroit d'o— nous voulons les donn‚es, et ES:DI pointe … celui
o— nous voulons stocker une information.

Maintenant, imaginez que nous avons la r‚partition suivante en m‚moire:

Adresse M‚moire ³ 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 ex‚cut‚ 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 ex‚cute STOSB, le r‚sultat serait le suivant:

Adresse M‚moire ³ 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 - D‚place un octet
MOVSW - D‚place un word

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

En DS:SI:

Adresse M‚moire ³ 06 ³ 07 ³ 08 ³ 09 ³ 10 ³ 11 ³ 12
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄÄÅÄÄÄ
Valeur ³ 50 ³ 32 ³ 38 ³ 03 ³ 23 ³ 50 ³ 12


En ES:DI:

Adresse M‚moire ³ 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 ex‚cute MOVSB, la
r‚partition m‚moire en ES:DI sera la suivante:

En ES:DI:

Adresse M‚moire ³ 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 sp‚cifi‚ dans le registre CX. Un REP
devant un MOVSB/LODSB/STOSB provoquerait sa r‚p‚tition:

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 d‚finitions que vous devriez connaŒtre.

þ Le BIT - la plus petite donn‚e que nous pouvons utiliser. Un bit - un
huitiŠme 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 d‚cimal. C'est l… qu'intervient l'h‚xad‚cimal. L'h‚xa est
bas‚ sur 16 chiffres (0-15), et quand on ‚crit en h‚xa, on utilise les
"caractŠres" 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 donn‚e 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 h‚xad‚cimal.

þ Le WORD - un mot est un nombre 16 bit, et peut contenir un nombre jusqu'…
65535. C'est 1111111111111111 en binaire, soit FFFFh en h‚xa.

Note: Parcequ'un word est constitu‚ de quatre nibbles, il est aussi
repr‚sent‚ par quatre valeurs h‚xad‚cimales.

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 suppl‚mentaires, 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 d‚finitions, 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
ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿ ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿
³ 0³0³0³0³0³0³0³0 ³ ³ 0³0³0³0³0³0³0³0 ³


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 h‚xa 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
ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿ ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿
³ 0³0³0³0³0³0³0³0 ³ ³ 0³0³0³0³0³0³0³0 ³

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'espŠre que ‡a n'a pas l'air trop difficile. Une fois que vous avez compris
‡a, vous ˆtes prˆts pour les SEGMENTS et les OFFSETS.


Une Architecture Segment‚e
----------------------------

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

Bien s–r, il ‚tait possible d'acc‚der … plus d'un m‚ga de RAM, mais il fallait
le diviser en segments pour l'utiliser, et c'‚tait le problŠme. 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 m‚thode pour sp‚cifier une adresse
m‚moire.


Ex: 3CE5:502A

^^^^ ^^^^
SEG OFS

OK, voici les caract‚ristiques:


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 prot‚g‚, 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 r‚f‚rons 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 trŠs utile. Consid‚rez-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
³ þ ³ premiŠre 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'enlŠve.


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


ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ

Et enfin, quelques petites proc‚dures qui r‚sument 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 ScŠne?**************************
***********************************(NONO)*************************************

Bon, comme ‡a a l'air d'ˆtre, … la mode, je vais vous parler un peu de la
ScŠne underground francophone. Pour ceux qui ne le sauraient pas (et ils sont
sans doute plut“t nombreux), la ScŠne est en fait constitu‚e par tous ceux
qui participent, de fa‡on 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 aprŠs Err418, le cr‚ateur (d'ailleurs,
il est … noter que bien que le num‚ro 15 devait ˆtre le dernier TC, sont
apparus r‚cemment les 16 et 17, soi-disant ‚crits par Err418. Personnellement,
j'en doute, car son e-mail a myst‚rieusement chang‚, et de plus, je trouve ces
num‚ros largement inf‚rieurs 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 r‚guliŠrement (ou presque).

D'o— vient cette recrudescence soudaine? Certains disent que c'est peut-ˆtre
d– aux m‚dias: 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-s‚rie "Pirate mag") y est pour quelque chose. Ce zine se
veut ouvertement underground, mais mˆme dans ses hors s‚rie, c'est pas l…
que les newbies vont r‚ussir … apprendre v‚ritablement quelque chose, vu le
faible niveau (exemple: comment cracker un logiciel? "il vous faut un d‚bugger
et une bonne connaissance de l'assembleur. Vous recherchez ensuite la
protection dans le programme et vous remplacez par des "nop".". C'est s–r qu'
avec ‡a, on devient un expert en cracking).

Ainsi cette soudaine augmentation du nombre de participants … la ScŠne ne
peut ˆtre que b‚n‚fique pour cette derniŠre, mˆme si une grande partie sont
dignes de parfaits lamerz (je les citerai pas, mais ceux qui se permettent de
sauvagement critiquer des groupes dŠs leur premier e-zine, sont pour moi pas
franchement brillants, mˆme si le reste de leur e-mag est pas si mal).

NONO, nono_18_02@hotmail.com

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

Pour pas changer, ce num‚ro sort hyper en retard. Alors bon, on va dire qu'…
partir de maintenant, P.G.K. sortira quand il sera prˆt, aucune date ne sera
fix‚e … 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 derniŠre ‚preuve
... enfin, sauf si je vais au rattrapage :-( ).
Pareil pour le site, il sera mis … jour de fa‡on trŠs al‚atoire. Je sais,
c'est pas vraiment s‚rieux, 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
compl‚ment au mien.
Donc jetez-vous dessus. D'ailleurs, je dois le mettre sur le site d'ici
bient“t, enfin dŠs 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 s–r tous ceux qui traŒnent sur #houseofwarez, #warezfrancais et
#hack.fr (en undernet)...

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT