Bonjour à tous !!
Je débute depuis quelques jours l'assembleur et j'ai un léger souci avec WriteFile.
La chaîne de caractères contenue dans le fichier texte de destination n'est pas celle que j'attend.
Voici le code :
Lorsque j'ouvre le fichier exemple.txt avec le bloc note j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 TITLE Create_write_file : Creation et ecriture dans un fichier .386 .model flat, stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib .data File_Handle DWORD ? Chaine BYTE "test d'ecriture dans un fichier",0 File_Name BYTE "exemple.txt",0 Nbr_Octet_Ecrit DWORD ? BufSize=( $ - Chaine ) .code start: INVOKE CreateFile, addr File_Name, GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0 mov File_Handle, eax INVOKE WriteFile, File_Handle, ADDR Chaine, BufSize , ADDR Nbr_Octet_Ecrit, 0 INVOKE CloseHandle, File_Handle INVOKE ExitProcess,0 END start
Bizarrement, WriteFile me rajoute le contenu de la variable "File_Name" dans mon fichier texte.test d'ecriture dans un fichier exemple.txt
Et si dans le code source, je mets la variable "File_Name" au dessus de la variable "Chaine", ben dans ce cas j'ai pas le contenu de la variable "File_Name" qui se retrouve dans exemple.txt ...
Et si j'ouvre avec Wordpad, il y a 1 caractere en forme de rectange entre ... un fichier et exemple.txt ... et 4 caracteres identique apres exemple.txt o_O
J'ai passé le code sous Ollydbg et la fonction CreateFile me retourne bien un numero d'handle ( 00000010h ) et la fonction WriteFile me retourne 00000001h, ce qui a l'air normal.
Voila si quelqu'un avait une ptite idée ça serait sympa, car perso j'ai épuisé toute les miennes.
Merci d'avance ...
Bien à vous
Partager