为何通过DOS MZ头计算的EXE文件大小远小于实际值?
问题解答
DOS MZ头里的V1和V2描述的是DOS兼容段的大小,并非整个EXE文件的总大小。
早期纯DOS环境下的EXE确实可以用这个公式计算总文件大小,但现代Windows PE格式的EXE只是把MZ头作为兼容层保留——它的作用是让DOS系统识别文件并给出不兼容提示,实际程序的代码、数据、资源等核心内容都在MZ头之后的PE结构部分。
具体细节:
V2*512+V1的计算结果,仅对应EXE文件开头的DOS stub(DOS兼容存根段)大小,通常只有几百字节- 要获取PE格式EXE的实际总大小,要么直接读取文件的实际字节数,要么查看PE头中的
SizeOfImage字段
内容的提问来源于stack exchange,提问作者alancc
相关产品推荐
相关产品推荐

