LA RESSURECTION DE LA PROGRAMMATION EN ASSEMBLEUR - PART 0
 
 
-
----- ========= -----
------- ==================== ----------
-------- =====Cours de _Masta_ sur l'asm Win95 part 0===== ---------
------- ====================----------
 
 
 - - ==INTRO== - -

Hi, après avoir chercher en vain un cours sur l'asm Win95, je me suis décidé à partager un petit cours de mon cru et j'espère que ce n'est qu'un des nombreux à venir.
 
 
 

 - - ==QU'EST-CE QUI EST REQUIS?  == - -
 
 
 
     
 
 
 - - ==AVANT TOUT== - -
 

Je suppose que vous possedez la connaissance fondamentale du langage assembleur, que chaque Cracker, Coder (Speedfreak! Ndt : Argent façile ! ) devrait avoir.
 
 
 

--==QU'EST CE QU'IL Y'A DE SPECIAL A PROPOS DU LANGAGE D'ASSEMBLEUR ET DE WIN95?  ==--
 

La principale différence est l'emploi des fonctions APIs, ainsi que vous ne pouvez pas employer d'interruptions. Les paramètres des APIs sont POUSSES (PUSH) sur la pile avant que la fonction ne soit appelée. C'est assez similaire au langage c (Le dernier paramètre poussé en premier, le second en dernier.  ...)  ...
De plus les caractères majuscules et minuscules DOIVENT être employés dans certaines conditions:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Toujours : MessageBoxA <-------------> JAMAIS !!! :  messageboxa
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
 

--== QU'EST-CE QUE NOUS APPRENDRONS DANS CE TUTORIAL ? ==--

Simple!  :  Le populaire "Hello World" - Demo :-).
(NdT : Il est courant dans les tuts anglo-saxons d'utiliser "Hello World", alors que nous aurions tendance à mettre "bonjour" ;)
 
 

--== HELLO WORLD !!! ==--
 

Ce sont deux mots, que chaque coder a déjà vu...
 

En premier lieu, nous allons nous demander comment le montrer sur l'écran. Ainsi, ce que nous ferons, c'est juste employer un MessageBox et comme nous travaillons sous Win95 et que nous voulons employer le 32bit PUR, la commande sera "MessageBoxA".

Aussi, nous regardons notre référence API (Win32.hlp) et recherchons "MessageBoxA". Voici ce que nous devrions trouver:
 
 
 

---------------------------------------------------------------------
int MessageBox (

HWND hWnd,         / / handle de la fenêtre propriétaire
LPCTSTR lpText,    / / adresse du texte dans la boite de dialogue
LPCTSTR lpCaption, / / adresse du titre de la boîte de dialogue
UINT uType         / / style de la boîte de dialogue

);
 

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

- Comme nous n'avons pas de fenêtre, l'appel au MessageBox se fera avec le "HWND" à 0.

- "lpText" contiendra l'offset de notre texte (où il est emmagasiné).

- "lpCaption" ---> offset du titre.

- "uType" que nous établissons 0 lui aussi, ce qui correspond à une boite de dialogue "normale" avec un gentil bouton OK (Type mb_ok).
 

Si maintenant nous commencions et regardions le source en ASM ...

(NdT : le code source est livré en version originale pour une meilleure compréhension)

;  ------------------------------- DEBUT -------------------------- tut.asm

;  établir certaines options pour l'assembleur.

.386P
Locals
jmps
 
 

.Model Flat ,StdCall

mb_ok      equ 0                    ;mb_ok gets the value "0"
hWnd       equ 0
lpText     equ offset text          ;set a pointer to the text
lpCaption  equ offset caption       ;set a pointer to the caption
 

; declaration of all used API-functions

extrn     ExitProcess          : PROC     ;procedure to shut down a process
extrn     MessageBoxA          : PROC     ;procedure to show a MessageBox
 

; here begins our Data
.Data
text     db "Hello World",13,10 ; first row of the text(with word-wrap)
         db "_masta_ greets everybody who reads this tut",0 ; second row, terminated with "0"
 

caption  db "Hello",0 ;Captionstring, 0-terminated

; and here we start with our code

.Code

Main:
                              ; lets greet the world   :))

push mb_ok              ;PUSH value for uType
push lpCaption          ;PUSH Pointer to Caption
push lpText             ;PUSH Pointer to Text
push hWnd               ;PUSH Masterhandle
call MessageBoxA        ;CALL MessageBoxA
CALL ExitProcess        ;End (exit) program

End Main                ;End of code, Main is the entrypoint
 
 

;-----------------------------------FIN------------------------tut.asm
 
 

Vous pouvez compiler le source avec le MAKE.BAT suivant :

------------------------ cut here --------------

tasm32 / mx / m3 / z / q tut

tlink32 - x / Tpe / ap / c tut, tut,, import32.lib

------------------------ cut here --------------
 
 

n'oubliez pas "import32.lib".
 
 

Bien, comme vous voyez, ce n'est pas beaucoup, mais j'espère que c'est un bon début à la programmation ASM windows pour vous.

- - ==FINAL WORDS== - -
 
 

C'est mon premier, mais sûrement pas mon dernier Cours sur la programmation assembleur sous windows ...
 
 
 

Ok, j'espère tous vous revoir pour le prochain cours ...
 
 

- - ==REMERCIEMENTS== - -
 
 
 

VucoeT (Translator [ :) ]), |Caligo| (kewl Page), fravia+ (best on the web),

stone (for the inspiration), not4you, fungus, |Quest|,

Silvio (where are you ?), Vantmas and every Cracker on this planet ...
 
 

------- ==================== --------
------ ====== Nous étions tous lamers, avant de devenir l'ELITE ====== -------
------- ==================== --------
 ----- ========= ------
-

Traduit de l'anglais par CyberBobJr
cyberbobjr@yahoo.com