winapi - 使用 VirtualQueryEx 时访问被拒绝错误

标签 winapi memory-management process virtual-memory access-rights

因此,我编写了一个程序,它能够使用 VirtualQueryEx 从大多数进程中成功读取内存。但是,我遇到过此功能失败的过程。不是系统进程,只是游戏进程。没有调试权限,我什至无法打开进程的句柄。通过它们,我能够获得进程的句柄,但仍然拒绝访问 VirtualQueryEx

我不确定,但也许这个过程是私有(private)的?如果是这样,我应该怎么做才能成功使用 VirtualQueryEx 函数?

我还在某处读到我可能必须在运行 VirtualQueryEx 之前挂起整个进程的线程,但到目前为止我不需要那个......当我使用函数 Thread32First 获取第一个线程时出现错误:ERROR_BAD_LENGTH...

如有任何帮助,我将不胜感激!

最佳答案

如何打开进程句柄?来自 the doc :

The handle must have been opened with the PROCESS_QUERY_INFORMATION access right, which enables using the handle to read information from the process object.

另一种可能性是目标进程和您的进程的位数不同(32 对 64)。在这种情况下,您需要使用 MEMORY_BASIC_INFORMATION32 或类似 VirtualQueryEx64 from wow64ext library 的东西.

关于winapi - 使用 VirtualQueryEx 时访问被拒绝错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769151/

相关文章:

c - 为什么c中的createfile函数停止for循环

c - mcisendstring 返回空字符串

c++ - Win32 - Midi 循环与 MCISendString

linux - (linux) 非动态结构数组在 memset 使用时使用 Rss 内存;为什么?

java - 使用进程构建器执行两个命令

java - 产生交互过程

c++ - Winsock C++ 应用程序无法在某些网络上运行

android如何下载一个1mb的图像文件并设置为ImageView

unit-testing - cmocka malloc 测试 OOM 和 gcov

java - Java 中的 Askpass 程序