首页
社区
课程
招聘
[求助]关于ZwAllocateVritualMemory这个函数的使用问题
发表于: 2021-3-16 13:15 4413

[求助]关于ZwAllocateVritualMemory这个函数的使用问题

2021-3-16 13:15
4413

众所周知,这个函数用来处在一个进程上下文的内核层给一个进程的应用层分配内存的,说白了和在应用层的VritualAllocEX这个函数的功能差不多,只不过VritialAllocEx是在应用层使用的,这个是在内核使用的,函数原型如下:

NTSTATUS ZwAllocateVirtualMemory(

IN HANDLE  ProcessHandle,

IN OUT PVOID  *BaseAddress,

        IN ULONG  ZeroBits,

IN OUT PSIZE_T  RegionSize,

IN ULONG  AllocationType,

IN ULONG  Protect

);

第二参数用来指定要分配的内存的起始虚拟地址,也可以设置为NULL让操作系统自己指定起始的虚拟地址,但问题是当第二个参数指定为NULL的时候如果内存分配成功了如何知道分配的这块内存的虚拟地址呢????

返回值和6个参数没有一个是用来获取分配的内存的虚拟地址的,微软官方的开发文档也没说怎么获取分配的内存地址,很是不解,有知道的大佬给解答一下,感激不尽!


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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 6172
活跃值: (4952)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
2
uintptr_t baseaddress{0};// 此时baseaddress为0
ZwAllocateVirtualMemory(xx,&baseaddress,xx,xx,xx,xx)  
DbgPrint("[+]BaseAddresss:%llx\n",baseaddresss);//此时若ZwAllocateVirtualMemory调用成功 baseaddress就是申请内存成功后 返回的虚拟地址。
调用完以后 baseaddress的值会被改变
2021-3-16 13:26
1
雪    币: 3322
活跃值: (3918)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
淡然他徒弟 uintptr_t baseaddress{0};// 此时baseaddress为0 ZwAllocateVirtualMemory(xx,&baseaddress,xx,xx,xx,xx ...
感谢!!
2021-3-16 16:06
0
游客
登录 | 注册 方可回帖
返回
//