首页
社区
课程
招聘
[求助]请教个驱动读R3内存的问题
发表于: 2010-3-18 15:22 6424

[求助]请教个驱动读R3内存的问题

2010-3-18 15:22
6424
平时读写内存正常,但在我用程序在目标程序内新分配了一段空间就不能读写,但在R3用ReadProcessMemory读一次,就能用驱动正常读写了,

我现在用的WIN7系统,有点不好看内核的代码,WRK没有。请高手们指教一下,ReadProcessMemory比我的代码多做了什么?

R3目标程序没有做任何保护。
驱动读R内存的大概代码如下:
status = ObReferenceObjectByHandle( hProcess,PROCESS_ALL_ACCESS,NULL,KernelMode,&EProcess,NULL);
if(!NT_SUCCESS(status))
{
。。。
}
readbuffer = ExAllocatePoolWithTag (NonPagedPool, BufferSize, 'Sys');
if(readbuffer==NULL)
{
。。。
}
KeStackAttachProcess (EProcess, &ApcState);

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找到WRK了,执行流程是NtReadVirtualMemory->MmCopyVirtualMemory->MiDoMappedCopy/MiDoPoolCopy,当读取过大POOL_MOVE_THRESHOLD时,使用MiDoMappedCopy
我想我一次性读取的内存不算大,而我实现的读内存大致和MiDoPoolCopy的方法差不多,实在找不到问题出在哪里了,知道问题的朋友请指点一下
2010-3-19 01:51
0
雪    币: 122
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找到原因了,MmIsAddressValid,这个方法判断新分配的地址可能有问题,要不就是我没有使用正确
2010-3-19 03:27
0
雪    币: 132
活跃值: (30)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
自问自答很深刻嘛
2010-10-27 15:07
0
游客
登录 | 注册 方可回帖
返回
//