MASM32使用程序集

时间:2017-06-08 12:44:32

标签: assembly file-io masm masm32

我目前正在对我的一些文件进行加密。但是,我在覆盖.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

回顾我的代码,伙计们!提前谢谢。

1 个答案:

答案 0 :(得分:1)

mov al, [esi]
cmp al, 7fh
jg skip

这是一个无用的测试!没有什么能比更强(有符号字节)而不是127 也许您打算测试高于(无符号字节)条件?

cmp byte [esi], 7Fh
ja  skip             ;Skip if from 128 to 255

只是一个想法。也许这个测试必须在每次迭代时重复?我们无法了解您的任务细节。