汇编程序XOR加密/解密文件

时间:2012-01-09 13:22:16

标签: assembly nasm xor encryption

寻找用汇编程序编写的程序,它将加密/解密文件。我使用NASM作为编译器。我找到了示例代码,但它会抛出错误

encrypt_xor proc lpBuffor:dword, dwSize:dword, dwKey:dword

   mov eax,lpBuffor
   mov ecx,dwSize
   mov edx,dwKey

  next_byte:

   xor byte ptr[eax+ecx-1],dl
   dec ecx
   jne next_byte

   ret

加密_xor endp

我有错误:

 encrypt_xor proc lpBuffor:dword, dwSize:dword, dwKey:dword

 encrypt_xor proc lpBuffor:dword, dwSize:dword, dwKey:dword

错误解析器:指令预期 还在这里

xor byte ptr[eax+ecx-1],dl

错误昏迷或预期结束

此代码有什么问题?

1 个答案:

答案 0 :(得分:3)

您提供的代码更像是MASM语法。 等效的NASM语法可以是这样的:

; void encrypt_xor(LPBYTE lpBuffor, DWORD dwSize, DWORD dwKey)
encrypt_xor:
  push    ebp 
  mov     ebp,esp 

  %stacksize flat
  %arg lpBuffor:dword, dwSize:dword, dwKey:dword

   mov eax,[lpBuffor]
   mov ecx,[dwSize]
   mov edx,[dwKey]

  next_byte:

   xor [eax+ecx-1],dl
   dec ecx
   jne next_byte

   mov esp, ebp
   pop ebp

   ret

这里有几点需要注意。使用%stacksize %arg 会假定 cdecl 调用约定(即所有参数都在堆栈上传递)。在NASM中,这需要包含堆栈帧(因此 esp ebp 语句)。

最后一点 - 如果共享此代码,您应该考虑更改名称。例程不提供任何类型的强加密,并且让开发人员陷入虚假的安全感是个坏主意。