- ; #########################################################################
-
- .386
- .model flat, stdcall
- option casemap :none ; case sensitive
-
- ; #########################################################################
-
- include \masm32\include\windows.inc
- include \masm32\include\user32.inc
- include \masm32\include\kernel32.inc
-
- includelib \masm32\lib\user32.lib
- includelib \masm32\lib\kernel32.lib
-
- ; #########################################################################
- .data
- ; # variable dynamiques #
- filename dd 0
- dirname dd 0
-
- .code
-
- Mtitle db "codé par BlackWizzard",0
- message db "fichier copié avec succes :)",0
- erreurmsg db "erreur durant la copie :(",0
- newname db "test.exe",0
- start:
-
- push 46h ; taille maximum buffer (+ si crainte du buffer overflow)
- push offset filename ; variable qui va accueillir la reponse
- push 0 ; sais pas a koi ça correspond
- call GetModuleFileNameA ; appel de l'API
- ; on connais le nom de notre programme, on commence la copie
- push offset newname ; argument "destination"
- push offset filename ; argument "fichier source"
- call CopyFileA ; on appel l'API
- cmp eax, 0 ; si eax = 0: erreur (fichier deja existant, etc...)
- jz short erreur ; dans ce cas, on va direct a "erreur:" pour signaler
-
- push MB_OK ; MB_OK = 0
- push offset Mtitle ; le titre
- push offset message ; le message
- push 0 ; sais pas
- call MessageBox ; on appel l'API
-
- push 0 ; sais pas
- call ExitProcess ; on appel l'API pour terminer le programme
-
- erreur: ; en cas d'erreur
- push MB_OK ; MB_OK = 0 ; blablabla...G deja expliké plus haut...
- push offset Mtitle
- push offset erreurmsg
- push 0
- call MessageBox
-
- push 0
- call ExitProcess
-
-
- end start
; #########################################################################
.386
.model flat, stdcall
option casemap :none ; case sensitive
; #########################################################################
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
; #########################################################################
.data
; # variable dynamiques #
filename dd 0
dirname dd 0
.code
Mtitle db "codé par BlackWizzard",0
message db "fichier copié avec succes :)",0
erreurmsg db "erreur durant la copie :(",0
newname db "test.exe",0
start:
push 46h ; taille maximum buffer (+ si crainte du buffer overflow)
push offset filename ; variable qui va accueillir la reponse
push 0 ; sais pas a koi ça correspond
call GetModuleFileNameA ; appel de l'API
; on connais le nom de notre programme, on commence la copie
push offset newname ; argument "destination"
push offset filename ; argument "fichier source"
call CopyFileA ; on appel l'API
cmp eax, 0 ; si eax = 0: erreur (fichier deja existant, etc...)
jz short erreur ; dans ce cas, on va direct a "erreur:" pour signaler
push MB_OK ; MB_OK = 0
push offset Mtitle ; le titre
push offset message ; le message
push 0 ; sais pas
call MessageBox ; on appel l'API
push 0 ; sais pas
call ExitProcess ; on appel l'API pour terminer le programme
erreur: ; en cas d'erreur
push MB_OK ; MB_OK = 0 ; blablabla...G deja expliké plus haut...
push offset Mtitle
push offset erreurmsg
push 0
call MessageBox
push 0
call ExitProcess
end start