首页
社区
课程
招聘
[求助]请问VirtualAllocEx怎样指定地址?貌似随便输入一个运行出错。还是其他参数有问题?
发表于: 2009-6-24 10:44 7625

[求助]请问VirtualAllocEx怎样指定地址?貌似随便输入一个运行出错。还是其他参数有问题?

2009-6-24 10:44
7625
请问VirtualAllocEx怎样指定地址?貌似随便输入一个运行出错。还是其他参数有问题?

invoke GetCurrentProcessId
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,eax
invoke VirtualAllocEx,eax,1024,160*120,MEM_COMMIT,PAGE_READWRITE

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

收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
必须指定一个合理有效的地址,或者是NULL,由操作系统替你选择~
2009-6-24 12:51
0
雪    币: 115
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1024 在用户态下是一个非法访问的地址,肯定出错,并且这个地址最好按分配粒度对齐
2009-6-24 13:19
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
有效地址至少得是0x1000~
2009-6-24 14:49
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
怎样才是合理有效的地址?
2009-6-24 16:21
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
什么是分配粒度?
2009-6-24 16:22
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
改成1000H还是不行啊。

invoke GetCurrentProcessId
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,eax
invoke VirtualAllocEx,eax,1000h,160*120,MEM_COMMIT,PAGE_READWRITE
2009-6-24 16:40
0
雪    币: 113
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
设0吧....任何地址都有可能被占用.
2009-6-24 16:41
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
就是需要一个地址,并且要每次运行程序时都一样的地址。
2009-6-24 17:01
0
雪    币: 113
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这个不可能的.你在自己的代码做自我重定位吧.
E8 00000000
pop eax
之后SUB或者ADD你的资源数据位置就好了..

或者你在资源或者代码段预留空间,不要动态申请内存.
2009-6-24 20:33
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
怎样预留空间?直接定义静态内存?这样超过1M程序就会出问题,而且越大编译越慢。
2009-6-24 21:31
0
雪    币: 113
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
你那是OPEN后写入的,直接在目标文件的区段定义虚拟地址,放长代码段或者数据段的尾部,就可以定义固定的特定长度的地址位置,和编译无关,你可以直接用PE修改工具修改虚拟区段大小.
2009-6-24 21:55
0
雪    币: 113
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
补充一下,也可以在目标文件尾部定义一个空的新区段,长度自己定义,并不占用物理盘文件的大小.
那定义的位置地址就是载入点+虚段前的段相加.是一个绝对的虚拟地址.
2009-6-24 22:00
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
这个不会啊,哪里有学习资料?
2009-6-25 18:14
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
用NULL,操作系统帮你定.
2009-6-26 11:29
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
invoke GetCurrentProcessId
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,eax
invoke VirtualAllocEx,eax,40000h,160*120,MEM_COMMIT,PAGE_READWRITE

貌似40000h是可以申请成功的,是不是这样的地址在其他机器上也会成功呢?
2009-6-28 19:44
0
游客
登录 | 注册 方可回帖
返回
//