寻找用汇编程序编写的程序,它将加密/解密文件。我使用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
错误昏迷或预期结束
此代码有什么问题?
答案 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 语句)。
最后一点 - 如果共享此代码,您应该考虑更改名称。例程不提供任何类型的强加密,并且让开发人员陷入虚假的安全感是个坏主意。