Copy Link
Add to Bookmark
Report
PGK Issue 7
******************************************************************************
*******************************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 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 hl
s 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. Hl
s.
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
ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿ ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿
³ 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 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
ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿ ÚÄÄÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄÄÄ¿
³ 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'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)...