根据EXE文件头计算出来的文件长度与实际长度为何不一样?

ksaii 2000-08-19 01:28:00
一个DOS下的exe可执行文件,文件头前几个字节的内容如下:
00H:4D 5A ;M Z
02H:60 00 ;可执行程序长度MOD 512
04H:5C 00 ;92,可执行文件的页长度
06H:00 00 ;重定位表数目
08H:04 00 ;文件头大小in 16 bytes
根据上面信息计算文件长度为:(0x5c-1)*512+0x60=46688
而实际这个文件的长度为:1,014,725 字节
请问会是什么原因?
注:此exe文件为用Watcom C/C++开发的,用到了DOS4G,是
保护模式的可执行文件,不知是否和这个原因有关?
先谢谢了!
...全文
282 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Icebird 2000-10-17
  • 打赏
  • 举报
回复
这个文件长度指的是DOS下普通程序的长度,如果人为地增加Overlay(如字库,配置),则会小于实际长度,如果大于了实际长度,则此程序有可能被病毒感染或文件头被破坏.

386保护模式(DOS4GW,PMode/w,Dos32,Cwsdpmi etc), Windows 3.1(NE), Windows 95+(PE) 都不同于标准的EXE格式, 只有标准的EXE格式且没有Overlay长度才等于实际大小.
Putao 2000-09-15
  • 打赏
  • 举报
回复
和这个原因有关!

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧