我目前正在对我的一些文件进行加密。但是,我在覆盖.txt文件时遇到了麻烦,并且很难确定出现了什么问题。下面是我一直在研究的代码中我认为存在问题的部分。
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
回顾我的代码,伙计们!提前谢谢。
答案 0 :(得分:1)
mov al, [esi] cmp al, 7fh jg skip
这是一个无用的测试!没有什么能比更强(有符号字节)而不是127 也许您打算测试高于(无符号字节)条件?
cmp byte [esi], 7Fh
ja skip ;Skip if from 128 to 255
只是一个想法。也许这个测试必须在每次迭代时重复?我们无法了解您的任务细节。