能力值:
( LV9,RANK:610 )
|
-
-
2 楼
必须指定一个合理有效的地址,或者是NULL,由操作系统替你选择~
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
1024 在用户态下是一个非法访问的地址,肯定出错,并且这个地址最好按分配粒度对齐
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
有效地址至少得是0x1000~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
怎样才是合理有效的地址?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
什么是分配粒度?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
改成1000H还是不行啊。
invoke GetCurrentProcessId
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,eax
invoke VirtualAllocEx,eax,1000h,160*120,MEM_COMMIT,PAGE_READWRITE
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
设0吧....任何地址都有可能被占用.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
就是需要一个地址,并且要每次运行程序时都一样的地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
这个不可能的.你在自己的代码做自我重定位吧.
E8 00000000
pop eax
之后SUB或者ADD你的资源数据位置就好了..
或者你在资源或者代码段预留空间,不要动态申请内存.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
怎样预留空间?直接定义静态内存?这样超过1M程序就会出问题,而且越大编译越慢。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
你那是OPEN后写入的,直接在目标文件的区段定义虚拟地址,放长代码段或者数据段的尾部,就可以定义固定的特定长度的地址位置,和编译无关,你可以直接用PE修改工具修改虚拟区段大小.
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
补充一下,也可以在目标文件尾部定义一个空的新区段,长度自己定义,并不占用物理盘文件的大小.
那定义的位置地址就是载入点+虚段前的段相加.是一个绝对的虚拟地址.
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
这个不会啊,哪里有学习资料?
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
用NULL,操作系统帮你定.
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
invoke GetCurrentProcessId
invoke OpenProcess,PROCESS_ALL_ACCESS,TRUE,eax
invoke VirtualAllocEx,eax,40000h,160*120,MEM_COMMIT,PAGE_READWRITE
貌似40000h是可以申请成功的,是不是这样的地址在其他机器上也会成功呢?
|
|
|