由于这些API,它在用户模式下很简单直接。Windows内核ReadProcessMemory()/ WriteProcessMemory()?
如何从Windows内核模块读取/写入指定进程的用户空间内存?
驱动程序的目标平台是Windows XP/2003
由于这些API,它在用户模式下很简单直接。Windows内核ReadProcessMemory()/ WriteProcessMemory()?
如何从Windows内核模块读取/写入指定进程的用户空间内存?
驱动程序的目标平台是Windows XP/2003
使用NtWriteVirtualMemory/NtReadVirtualMemory写信给其他进程 - 你需要首先打开的句柄过程。
请注意,如果您已经在进程中,则可以直接写入 - 例如,如果您正在响应来自进程的DeviceIoControl请求,您可以直接写入用户模式地址,并且它们将位于调用您的进程的地址空间。
我也是从Windows驱动程序的世界开始的,从我读过的内容XxxProcessMemory在ntdll(R3-UserMode)中调用NtXxxVirtualMemory。 NtXxxVirtualMemory也在ntdll中调用ZwXxxVirtualMemory(R0-KernelMode)。
我相信你应该使用ZwXxxVirtualMemory。
在krnel中,ZwXxx例程只是围绕NtXxx的例程,告诉内核调用者是内核模式组件,而不是用户应用程序。当一个调用来自usermode时,内核会执行额外的安全检查。
因此,在内核中使用ZwXxx。
用于读/ /写入存储器到另一个进程的另一种方法是:
您应该在捕获阶段访问内存,在此之后,您应该只对捕获的值进行操作。否则,你有一个安全漏洞。 – 2011-12-16 15:23:09