首页
社区
课程
招聘
[求助]驱动内调用ZwAllocateVirtualMemory,分配特定地址
发表于: 2014-4-8 15:09 5578

[求助]驱动内调用ZwAllocateVirtualMemory,分配特定地址

2014-4-8 15:09
5578
问题:

    我在驱动中调用ZwAllocateVirtualMemory来分配一个进程虚拟内存,是成功的。但这个地址是系统分配,我想分配一个大于某个地址(如:0x00500000)以后的地址,因为ZwAllocateVirtualMemory分配的地址有时小于0x0050000,在求偏移的是0xFFFXXXX(负数),32位系统没大问题,但是在64位时,这个地址的相对偏移,就不太好。

有没有好的办法?   谢谢大家。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
直接想到的一种比较笨的办法,分配到了先留着, 继续分配,等分配到了合适的,再把原来的释放掉。
2014-4-8 15:29
0
雪    币: 364
活跃值: (1716)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
开始也想到这种办法,这样吃内存,会很卡的
2014-4-8 15:57
0
雪    币: 952
活跃值: (1821)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
ZwAllocateVirtualMemory 有参数可以先把地址留着 要使用时再提交的
2014-4-8 17:18
0
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
5
好像这类函数有个 TOP_DOWN 标志位,意思是从高地址向低地址分配,LZ可以看下。
2014-4-8 18:44
0
雪    币: 364
活跃值: (1716)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
谢谢大家,已经解决了。就是第二个参数不为空时,是在下个地址分配的。 用 TOP_DOWN 标志位获取最大地址,我们的地址不断加0x10000(加后要小于最大地址),来调用这个函数,获取MM_FREE的内存。
2014-4-8 19:53
0
游客
登录 | 注册 方可回帖
返回
//