首先,我使用MASM,打开一个加密文件并将其内容放入缓冲区并将其导出到新文件。除了解密部分,我有一切工作。使用XOR解密文件
我不确定是否需要XOR缓冲区本身或者是否参考edx(我存储缓冲区的位置),还是需要XOR读取的字节,然后将其放入eax寄存器。
首先,我使用MASM,打开一个加密文件并将其内容放入缓冲区并将其导出到新文件。除了解密部分,我有一切工作。使用XOR解密文件
我不确定是否需要XOR缓冲区本身或者是否参考edx(我存储缓冲区的位置),还是需要XOR读取的字节,然后将其放入eax寄存器。
通过XOR,我假设你是指反转缓冲区中的所有位,即与全1的XOR相反。
我在ASM上很生疏,但我认为要做的事情是将$ FFFF加载到某个寄存器中,然后循环遍历缓冲区,将每个字节或单词或双字加载到AX中,与另一个寄存器异或,将该值存回缓冲区。
如果您使用简单的XOR函数进行解密和加密,则函数对于boath调用是相同的。 XOR二元函数是可逆的!
把我的头(没有测试)的顶部...
mov esi,dword ptr [buffer]
mov ecx,dword ptr [bufsize]
shr ecx,2
jz startloop1
toploop4:
mov eax,dword ptr [esi]
xor eax,ffffffffh
mov dword ptr [esi],eax
dec ecx
jnz toploop4
startloop1:
mov ecx,dword ptr [bufsize]
and ecx,3
jz end
toploop1:
mov al,byte [esi]
xor al,ffh
mov dword ptr [esi],al
dec ecx
jnz toploop1
end:
更好的主意 - 它写在C. – shoosh 2009-11-06 19:58:00