读写过程:虚拟地址 → 手工遍历目标进程页表 → 得到物理地址 → MmMapIoSpace 映射物理页 → 直接读写物理内存。
可以实现:
- 读取其他进程的用户态内存;
- 不调用
ReadProcessMemory; - 不直接调用
MmCopyVirtualMemory; - 不创建目标进程的用户态高权限句柄;
- 不经过目标进程的 VAD 查询路径;
- 可以读取跨页地址;
- 理论上可以读取代码段、堆、全局变量等已映射页面。
因此,它可以规避只监控以下行为的检测:
ReadProcessMemoryNtReadVirtualMemoryMmCopyVirtualMemory- 普通进程句柄访问
- 用户态工具的读内存调用栈
通过物理内存访问绕过常规进程内存 API 的内核读写方案。
本内容需要登录后查看