ассемблер XOR шифрует / дешифрует файл - PullRequest
0 голосов
/ 09 января 2012

Ищите программу, написанную на ассемблере, которая будет шифровать / дешифровать файлы. Я использую 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 Ответ

3 голосов
/ 09 января 2012

Код, который вы указали, больше похож на синтаксис 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 ).

Последнее замечание: если этот код является общим, вам следует подумать об изменении имени. Подпрограмма не обеспечивает какого-либо надежного шифрования, и это плохая идея, чтобы усыпить разработчиков ложным чувством безопасности.

...