如何在C中的内存中异或字节?

时间:2016-09-18 19:02:14

标签: c function pointers memory xor

我需要一个函数,它将起始地址作为第一个参数,将大小作为第二个参数,并且它应该在运行时在内存中xor该范围。我怎么能做到这一点?

我天真的做法是:

void XorMemory(DWORD StartAddress, DWORD dwSize)
{
    DWORD *Start = &StartAddress;
    DWORD size = StartAddress + dwSize;
    DWORD *End = &size;

    while(*Start < *End)
    {
        *Start++ ^= 0x83;
    }

}

但是当它需要反转操作时它会失败。如何解决?

1 个答案:

答案 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 *