首页 文章

关于Windows NT / 10上的可移植可执行文件分配的堆的方式和位置?

提问于
浏览
0

我目前正在研究可移植可执行文件格式,并且've learned about the 9 common sections such as .code, .data, .rdata, .debug, and etc... However, one piece of information which seems to be obscure and absent from the papers I'已读取的是程序的位置(地址空间)'s 1334345 in memory in regards to these section, and how it is assigned as well. Is it part of one of these data sections? I'听说过它出现在.bss部分之后,但这些只是谣言 . 当Windows加载器加载PE时,是否存在设置堆大小(当然,对于每个特定的exe),如果是这样,它的基础是什么?

1 回答

  • 0

    IMAGE_OPTIONAL_HEADER中有几个字段控制默认进程堆的初始大小( GetProcessHeap ),但堆本身不是PE布局的一部分 .

    程序可以使用 HeapCreate 创建其他堆 . 堆也可以在不同的模式下运行(序列化或不序列化),并且还有low-fragmentation heap实现 .

    您可以使用VMMap查看堆在虚拟内存中的位置,但不应依赖此信息 . ASLR will move them如果您重新启动计算机 .

相关问题