gpt4 book ai didi

c - 如何在C中对内存中的字节进行异或?

转载 作者:行者123 更新时间:2023-11-30 20:35:27 25 4
gpt4 key购买 nike

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

我天真的做法是这样的:

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

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

}

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

最佳答案

void EncryptDecrypt(DWORD StartAddress, DWORD dwSize)
{
BYTE * t = (BYTE *)StartAddress;
for ( DWORD i = 0; i < dwSize; i++ )
t[i] ^= 0x83;
}

但是将 StartAddress 定义为 DWORD 并不是一个好主意。最好是 BYTE * 甚至 void *

关于c - 如何在C中对内存中的字节进行异或?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39561503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com