我需要一个函数,它将起始地址作为第一个参数,将大小作为第二个参数,并且它应该在运行时在内存中xor该范围。我怎么能做到这一点?
我天真的做法是:
void XorMemory(DWORD StartAddress, DWORD dwSize)
{
DWORD *Start = &StartAddress;
DWORD size = StartAddress + dwSize;
DWORD *End = &size;
while(*Start < *End)
{
*Start++ ^= 0x83;
}
}
但是当它需要反转操作时它会失败。如何解决?
答案 0 :(得分:0)
void EncryptDecrypt(DWORD StartAddress, DWORD dwSize)
{
BYTE * t = (BYTE *)StartAddress;
for ( DWORD i = 0; i < dwSize; i++ )
t[i] ^= 0x83;
}
但将StartAddress
定义为DWORD
并不是一个好主意。最好是BYTE *
甚至void *
。