首页
社区
课程
招聘
[求助]VirtualQueryEx函数中有个参数不知道怎么用啊???
2006-3-4 15:54 6650

[求助]VirtualQueryEx函数中有个参数不知道怎么用啊???

2006-3-4 15:54
6650
DWORD VirtualQueryEx(

    HANDLE hProcess,        // handle of process
    LPCVOID lpAddress,        // address of region
    PMEMORY_BASIC_INFORMATION lpBuffer,        // address of information buffer  
    DWORD dwLength         // size of buffer
   );       
这个函数中的第二个参数是什么意思啊??怎么用啊??请大家帮下忙解答,谢谢!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌 握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞7
打赏
分享
最新回复 (9)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 25 2006-3-4 16:34
2
0
内存区域的指针
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小Ding 2006-3-4 16:40
3
0
最初由 北极星2003 发布
内存区域的指针

是要我自己先去分配一段内存,再用这段内存的起始地址当参数,是吗?
能不能详细点,我是初学者,谢谢你啊!!
雪    币: 371
活跃值: (790)
能力值: ( LV12,RANK:570 )
在线值:
发帖
回帖
粉丝
kongfoo 14 2006-3-8 10:27
4
0
VirtualQueryEx一般用来查询其他进程的内存的属性。如果你自己先分配一段内存,就不用VirtualQuery了,因为分配的时候你就已经指定了该内存的属性,再查岂不是多此一举?:)
lpAddress是一个指针,你要查询的内存的地址。
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小Ding 2006-3-8 18:53
5
0
最初由 kongfoo 发布
VirtualQueryEx一般用来查询其他进程的内存的属性。如果你自己先分配一段内存,就不用VirtualQuery了,因为分配的时候你就已经指定了该内存的属性,再查岂不是多此一举?:)
lpAddress是一个指针,你要查询的内存的地址。


谢谢楼上的解答,不过还是不明白.
我的原意是用openProcess()函数打开一个进程,再用VirtualQueryEx函数查询进程在内存中的虚拟地址.这个lpAddress参数指向的内存地址去哪里找啊???
雪    币: 205
活跃值: (2659)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
yeyeshun 2 2006-3-8 20:03
6
0
你是要查询全部内存的话,参数就是0,从头开始查,如果是有目的的查,比如从0x400000开始查,那么参数就是0x400000
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小Ding 2006-3-9 15:38
7
0
LOCAL    @mbi:MEMORY_BASIC_INFORMATION   ;局部变量定义

invoke  VirtualQueryEx,@hProcess,NULL,addr @mbi,sizeof @mbi

这样用没错吧,为什么函数都是执行失败啊,???
雪    币: 291
活跃值: (208)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
thebutterfly 5 2006-3-9 16:30
8
0
VirtualQueryEx是查询内存页属性的
第二个参数是欲查询的那个页面中的某个线性地址
一页是4KB大小, 只要指定了这4KB中的任何一个线性地址就会返回整个页面的信息
如果试图查询内核模式下的页面(如线性地址80000000h以上的内存页), 函数会执行失败
雪    币: 214
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小Ding 2006-3-9 18:02
9
0
最初由 thebutterfly 发布
VirtualQueryEx是查询内存页属性的
第二个参数是欲查询的那个页面中的某个线性地址
一页是4KB大小, 只要指定了这4KB中的任何一个线性地址就会返回整个页面的信息
如果试图查询内核模式下的页面(如线性地址80000000h以上的内存页), 函数会执行失败


谢谢楼上的解答.不过我是用openProcess()函数随便打开的一个进程,我怎么去确定这个参数是多少啊?用什么知道这个地址呢??还有这个参数用NULL有没有错啊??但我的函数还是执行失败啊!
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 25 2006-3-9 18:24
10
0
VirtualQueryEx是用来查询内存页面保护属性的
假设你需要修改PE文件头的“PE”标志,那么首先你需要取得指向文件头的指针pFileHeader,然后把pFileHeader作为第二个参数就可以了。
如果对“指针”,“取地址”等概念不清楚的话,看看那些程序设计的书籍
游客
登录 | 注册 方可回帖
返回