2009-11-06 72 views
1

首先,我使用MASM,打开一个加密文件并将其内容放入缓冲区并将其导出到新文件。除了解密部分,我有一切工作。使用XOR解密文件

我不确定是否需要XOR缓冲区本身或者是否参考edx(我存储缓冲区的位置),还是需要XOR读取的字节,然后将其放入eax寄存器。

+2

更好的主意 - 它写在C. – shoosh 2009-11-06 19:58:00

回答

0

通过XOR,我假设你是指反转缓冲区中的所有位,即与全1的XOR相反。

我在ASM上很生疏,但我认为要做的事情是将$ FFFF加载到某个寄存器中,然后循环遍历缓冲区,将每个字节或单词或双字加载到AX中,与另一个寄存器异或,将该值存回缓冲区。

0

如果您使用简单的XOR函数进行解密和加密,则函数对于boath调用是相同的。 XOR二元函数是可逆的!

1

把我的头(没有测试)的顶部...

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: