加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 01:39:59 所属栏目:Windows 来源:网络整理
导读:在我看来,它总是要4GB,因为它使用相同大小的数据类型(A DWORD)? SizeOf Image的DWORD是不是总是32位?还是我错了这个限制? 回答 4GB确实似乎是所有便携式可执行程序(32位和64位PE)的硬限制. 根据 spec,PE32图像的32位无符号值就像PE32图像一样. 但是,在我
在我看来,它总是要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位整数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读