Question

Comment pouvez-vous XOR de la valeur stockée dans EAX?

Le problème, c'est à cette ligne:

xor eax, key

EAX contient l'adresse de la valeur que je veux XOR.Comment puis-je accomplir?J'ai pensé que ce serait quelque chose le long des lignes de:

xor [eax], key

mais cela ne fonctionne pas (erreur de syntaxe)

 decrypt proc startAddress:DWORD , sizeOfSegment:DWORD , key:DWORD


  xor ecx, ecx    ; clear the ecx register for the counter
  mov eax, startAddress  ; copy the start address to eax
  .while ecx < sizeOfSegment  ; loop through the code
  xor eax, key    ; XOR decrypt the word
  inc eax
  inc ecx
  .endw

   ret

  decrypt endp
Était-ce utile?

La solution

Vous avez dit que vous êtes en train de faire ...

xor eax, key    ; XOR decrypt the word

...mais je suppose que c'est une faute de frappe et que vous êtes en train d'essayer de faire ...

xor [eax], key    ; XOR decrypt the word

La raison pourquoi cela ne fonctionnera pas, c'est que key n'est-ce pas un registre:c'est probablement, je ne sais pas, un synonyme de quelque chose comme [ebp+4].

x86 (et pas seulement de MASM, mais msna trop:le jeu d'instructions x86) permet de registre à registre et le registre de la mémoire et de la mémoire-pour-inscrivez-vous opérandes, mais pas de mémoire à mémoire.

Donc, vous devez charger la clé dans un peu de registre, par exemple:

  mov eax, startAddress
  mov ebx, key ; move key into a register, which can be XORed with [eax]
  .while ecx < sizeOfSegment
  xor [eax], ebx

Dans une affaire distincte, avez-vous vraiment envie de le faire inc eax ou devrait-il être add eax,4 ?Je veux dire, vous dites "XOR décrypter la parole":voulez-vous dire "mot", ou "byte", ou "double-parole"?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top