由于这些API,它在用户模式下简单明了。
如何从Windows内核模块读取/写入指定进程的用户空间内存?
驱动程序目标平台是windows xp / 2003
答案 0 :(得分:4)
使用NtWriteVirtualMemory / NtReadVirtualMemory写入其他进程 - 您需要首先打开进程的句柄。
请注意,如果您已经在进程中,则可以直接编写 - 例如,如果您正在响应来自进程的DeviceIoControl请求,则可以直接写入用户模式地址,并且它们将位于地址中呼叫你的过程的空间。
答案 1 :(得分:0)
我也是从Windows驱动程序的世界开始,从我读过的XxxProcessMemory调用ntdll中的NtXxxVirtualMemory(R3-UserMode)。 NtXxxVirtualMemory也在ntdll中调用ZwXxxVirtualMemory(R0-KernelMode)。
我相信你应该使用ZwXxxVirtualMemory。
答案 2 :(得分:0)
在krnel中,ZwXxx例程只是围绕NtXxx的例程,告诉内核调用者是内核模式组件,而不是用户应用程序。当来自usermode的调用时,内核会执行额外的安全检查。
因此,在内核中使用ZwXxx。
从/向另一个进程读取/写入内存的另一种方法是: