gpt4 book ai didi

windows - WriteProcessMemory ERROR_PARTIAL_COPY 299

转载 作者:可可西里 更新时间:2023-11-01 13:50:08 28 4
gpt4 key购买 nike

我正在尝试写入另一个进程的内存,我以 38h(VM_OPERATION、VM_READ、VM_WRITE)权限打开它,然后我以 4h(PAGE_READWRITE)权限使用 VirtualProtectEx,但我也尝试了 PAGE_EXECUTEREADWRITE - 稍后出现同样的错误。

然后调用ReadProcessMemory,成功读出固定地址的值。但是当我尝试使用 WriteProcessMemory 写入该地址时,我得到错误代码 299 - ERROR_PARTIAL_COPY。

有人知道怎么解决吗?

编辑:已解决 - 没有将缓冲区作为引用传递,而是作为值传递

最佳答案

WriteProcessMemory给出错误 ERROR_PARTIAL_COPY 299 因为第三个参数 lpBuffer 需要是一个指针。特别是指向包含您打算写入目标进程的数据的本地缓冲区的指针。例如,如果缓冲区是一个整数,例如:

int x = 5;

然后您将使用&x 作为lpBuffer 参数。 & 是返回变量指针的运算符的“地址”。

通常情况下,如果您不为该参数传递指针,您会遇到编译器错误。无论如何,ERROR_PARTIAL_COPY 意味着并非源缓冲区中的所有字节都已写入目标进程。发生这种情况的原因有多种,特别是如果 lpBuffer 参数未指向具有正确权限的已提交内存地址。如果你也搞砸了 WriteProcessMemory 的第二个参数,同样的事情会发生

使用 VirtualProtectEx获得对目标内存页面的写权限也是推荐的步骤,就像我在这里做的那样:

void PatchEx(HANDLE hProcess, char* dst, char* src, int size)
{
DWORD oldprotect;
VirtualProtectEx(hProcess, dst, size, PAGE_EXECUTE_READWRITE, &oldprotect);
WriteProcessMemory(hProcess, dst, src, size, NULL);
VirtualProtectEx(hProcess, dst, size, oldprotect, &oldprotect);
}

关于windows - WriteProcessMemory ERROR_PARTIAL_COPY 299,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3799195/

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