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.
@@lõRD ÇÅLïGø'$ fâN~tÃ$tï© @@wøRLÐ @@øF ¢RAcKïn~G
[>Cracking.home.ml.org <]
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
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" ;)
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.
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 ...
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
...