此Caesar密码程序生成解密字符串(长度始终为10),输出为output.txt文件。例如下面的代码制作.txt文件,
ILIKEASSEM
HOWAREYOUU
但是当我运行此代码时,文件为
ILIKEASSEM
ILIKEASSEM
即使通过Visual Studio 2017(MASM)调试器(T.T)进行调试,我也不知道出什么问题了>>
怎么了...?
INCLUDE Irvine32.inc
.data
Num_Str DWORD 2
;;key = 10
Cipher_Str BYTE "SVSUOKCCOW",0
BYTE "RYGKBOIYEE",0
filename BYTE"output.txt", 0
fileHandle DWORD ?
BUFFER_SIZE = 12
buffer BYTE BUFFER_SIZE DUP(?)
L BYTE "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0
Decipher BYTE "QRSTUVWXYZABCDEFGHIJKLMNOP", 0
count DWORD ?
.code
main PROC
mov edx, OFFSET filename
call CreateOutputFile
mov fileHandle, eax
mov ecx, Num_Str
mov esi, 0
L1:
push ecx
mov ecx, 11
L2:
mov al, Cipher_Str[esi]
sub al, 65
movzx ax, al
movzx eax, ax
mov edi, eax
mov al, Decipher[edi]
mov buffer[esi], al
inc esi
loop L2
mov bl, 13
mov buffer[esi], bl
inc esi
mov bl, 10
mov buffer[esi], bl
mov eax,fileHandle
mov edx,OFFSET buffer
mov ecx, BUFFER_SIZE
call WriteToFile
pop ecx
loop L1
mov eax, fileHandle
call CloseFile
exit
main ENDP
END main
此Caesar密码程序生成解密字符串(长度始终为10),输出为output.txt文件。例如下面的代码制作.txt文件,ILIKEASSEM HOWAREYOUU,但是当我运行此代码时,...
您正在溢出12个字节的buffer