【发布时间】:2020-10-04 14:01:18
【问题描述】:
我正在尝试制作一个使用 JNA 读取另一个(非 Java 和 32 位)应用程序内存的应用程序。到目前为止,我知道如何找到模块的 process ID 和 base address。在读取内存之前,我需要打开进程,OpenProcess 函数只返回 null。另外,我使用的是 Windows 10。
// process id (pid) is known
final int PROCESS_VM_READ=0x0010;
final int PROCESS_QUERY_INFORMATION=0x0400;
WinNT.HANDLE processHandle = Kernel32.INSTANCE.OpenProcess(PROCESS_VM_READ | PROCESS_QUERY_INFORMATION, true, pid);
如何获取进程句柄?
【问题讨论】:
-
Kernel32.GetLastError()或更好的ntdll.RtlGetLastNtStatus()告诉你原因。最常见的原因 - 访问被拒绝和无效的进程 ID -
好的,我检查了这个,但访问被拒绝。那我如何获得此访问权限?
-
如果您有调试权限 - 启用它。这对你的情况一定有帮助