gpt4 book ai didi

c++ - ReadProcessMemory 始终失败并显示 GLE : 299

转载 作者:行者123 更新时间:2023-11-30 02:07:55 27 4
gpt4 key购买 nike

有人可以帮助我吗,我不知道为什么 ReadProcessMemory 函数失败并且 GetLastError = 299。这是我的代码,我看不出我做错了什么。

if(ReadProcessMemory(hProcess, (void*)0, IDH_Buffer, sizeof(IMAGE_DOS_HEADER), 0) != true)
std::cout << "Failed to read from Process, GLE=" << GetLastError() << "\n";

IDH_Buffer 已分配,hProcess 非 NULL

我的应用程序以管理员身份运行,我尝试读取的应用程序是标准用户模式应用程序。

请你给我建议。谢谢

最佳答案

引自MSDN on Win32 error codes :

ERROR_PARTIAL_COPY
299 (0x12B)
Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

我的猜测是您指定的地址包含一些有效数据,但在该地址和(地址 + 拷贝长度)之间的某处,没有内存映射。

参见 wikipedia on page tablevirtual memory进一步了解操作系统如何建立地址空间。用那种说法,在那个内存范围的某处有一个无效的页表条目。

实际上,查看您的代码...很明显,这是行不通的。 BaseAddress 参数为零。您正在尝试取消引用其他进程地址空间中的 NULL 指针。如果目标进程本身试图拉取它,它就会崩溃。 :-) EXE 的 header 未映射到地址 0。如果您尝试从 EXE 文件本身读取,我建议简单地在通过 GetModuleFileNameEx 获得的路径上调用 CreateFile >.

关于c++ - ReadProcessMemory 始终失败并显示 GLE : 299,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374285/

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