Actuellement, je fais un cryptage dans certains de mes fichiers. Cependant, j'ai de la difficulté à écraser un fichier .txt et à avoir du mal à identifier ce qui s'est mal passé. Ci-dessous, la partie du code sur laquelle je travaille qui, je pense, a le problème.MASM32 Écrasement d'un fichier à l'aide de l'assemblage
push 0
push FILE_ATTRIBUTE_NORMAL
push OPEN_EXISTING
push 0
push 0
push FILE_READ_DATA
push offset fData.cFileName
call CreateFile
mov hndl, eax
push 0
push hndl
call GetFileSize
mov fSize, eax
push 0
push offset bfrLen
push fSize
push offset bfr
push hndl
call ReadFile
push hndl
call CloseHandle
lea esi, bfr
mov al, [esi]
cmp al, 7fh
jg skip
encrypt:
mov al, [esi]
xor al, 0ffh
mov [esi], al
inc esi
mov al, [esi]
cmp al, 00h
jne encrypt
push 0
push FILE_ATTRIBUTE_NORMAL
push CREATE_ALWAYS
push 0
push 0
push FILE_WRITE_DATA
push offset file
call CreateFile
mov hndl, eax
push offset bfr
call lstrlen
push 0
push offset bfrLen
push fSize
push offset bfr
push hndl
call WriteFile
push hndl
call CloseHandle
skip:
ret
Passez en revue mon code, les gars! Merci d'avance.
Utilisez un débogueur et un traceur syscall. Ajouter la gestion des erreurs à votre programme. En outre, commentez votre code particulièrement si vous voulez que d'autres aident. Donner plus de détails que "avoir un problème", décrire ce qui se passe. Cela dit, 'push WriteFile' est très suspect, n'entendez-vous pas' call WriteFile'? – Jester
Je n'ai pas remarqué ça. Merci. Cependant, le code ne fonctionne toujours pas. – Pentagon
De plus, votre 'jg skip' est suspect, il ignore tout, y compris l'écriture du fichier. Difficile de dire si vous le voulez ou non, avec les informations limitées que vous avez fournies. "ne fonctionne pas" n'est toujours pas mieux que "avoir un problème". Voir aussi [demander]. – Jester