64位Windows上的PE文件的最大大小是多少?

前端之家收集整理的这篇文章主要介绍了64位Windows上的PE文件的最大大小是多少?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我看来,它总是要4GB,因为它使用相同大小的数据类型(A DWORD)? SizeOf Image的DWORD是不是总是32位?还是我错了这个限制?

回答

4GB确实似乎是所有便携式可执行程序(32位和64位PE)的硬限制.

根据 spec,PE32图像的32位无符号值就像PE32图像一样.

但是,在我使用Windows 7 SP1 Home Premium x64上的32位和64位应用程序(PE32 / PE32文件)进行测试时,两者的最大文件大小在1.8-1.85GB之间.

我通过使用Visual Studio(〜8K为32位和9K为64位)创建一个非常基本的C可执行程序,并添加了一个空代码段到PE头,直到Windows不再加载它,然后二进制搜索极限.使用vmmap查看进程显示,几乎所有第一个2GB的地址空间都是映像(包括随后加载的任何DLL,如kernel32.dll).对于32位和64位进程,我的限制是一样的. 64位进程的NT标头的文件头部分中设置了标志,指出它可以处理地址> 2GB.它也可以为高于2GB限制的非图像部分分配内存.

看起来像是需要在整个进程的2GB空间中整合图像,这意味着SizeOfImage被有效地处理了一个带符号的32位整数.

猜你在找的Windows相关文章