-
-
[原创]Window上map远程进程内存空间到本地进程
-
发表于:
2018-2-16 23:06
5598
-
[原创]Window上map远程进程内存空间到本地进程
原理简介:
1,通过NtQuerySystemInformation+NtQuerySystemInformation获取远程进程的pfn databse(可以说是物理内存数据库)
2,分析pfn databse拿到PTE_BASE
3,本地进程通过VirtualAlloc + MEM_RESERVE + MEM_PHYSICAL预留足以容纳目标进程所有内存的虚拟内存空间
4,加载一个驱动 传入 PTE_BASE + 预留的虚拟内存空间 + 远程进程的pfn列表
5,驱动中修改本地进程预留内存的pte,使其指向远程进程内存空间对应的物理内存
经过以上5步后,读写预留的虚拟内存,就相当于读写远程进程了。
这原理的几个细节地方都可以单独开贴来讲了,这贴就懒得展开了,大家看源码吧。贴尾有些资料可以看下。
已知问题:
会不定期蓝屏,原因是与windows的内存管理机制有冲突。
不unmap就退出进程会蓝屏
某些情况下的缺页也会蓝屏
资料:
bbs.pediy.com/thread-203391.htm
bbs.pediy.com/thread-205143.htm
源码:
因为和本贴不相关的代码太多和其他原因,不能整个项目分享出来。但核心代码都分享了。
部分源码来自《Windows Internals》https://github.com/zodiacon/WindowsInternals
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)