首先我使用MASM,我打开一个加密文件并将其内容放入缓冲区并将其导出到新文件中。除了解密部分外,我的一切都在工作。
我不确定是否需要对缓冲区本身进行异或,或者我是否引用edx(我存储缓冲区),或者我需要对读入的eax寄存器中的字节进行异或。
答案 0 :(得分: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:
答案 1 :(得分:0)
通过XOR,我假设你的意思是反转缓冲区中的所有位,即全部为1的XOR。
我在ASM上生锈,但我认为要做的是将$ FFFF加载到某个寄存器中,然后遍历缓冲区,将每个字节或字或双字加载到AX中,与其他寄存器进行异或并存储值返回缓冲区。
答案 2 :(得分:0)
如果您使用简单的XOR函数进行解密和加密,那么对于boath调用,函数是相同的。 XOR二进制函数是可逆的!