首页
社区
课程
招聘
[求助]在内核给用户空间做patch时一些内存操作的问题。
发表于: 2010-11-16 13:55 3251

[求助]在内核给用户空间做patch时一些内存操作的问题。

2010-11-16 13:55
3251
我看到一段代码是下面这样的。。它是可行的。跑起来能正常运行。但有些要点我没有搞清楚。所以我不太确定代码这样些的原理。请达人指点一下。

首先:
KeAttach到目标进程

申请一块内存
ZwAllocateVirtualMemory(hProcess,&pHookCode,0,&Length,MEM_RESERVE | MEM_COMMIT,PAGE_EXECUTE_READWRITE);

pMdl = IoAllocateMdl(pHookCode, Length, 0, 0, 0);

MmBuildMdlForNonPagedPool(pMdl);
这里MmBuildMdlForNonPagedPoolMSDN的解释是"The input MDL virtual address must be within the nonpaged portion of system space",那么显然pHookCode不是非分页内存。那为什么这样是可行的?

pMdl->MdlFlags |= MDL_MAPPING_CAN_FAIL;

SystemBuffer = MmMapLockedPages(pMdl, KernelMode);

KeDetachProcess

还有一个问题是。。。虽然我得到了一个SystemBuffer地址。但是我是不是仍然可以通过pHookCode这个虚拟地址读写进程内存?

这不会导致什么问题吧?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//