PE可选头CheckSum字段是否已废弃?MSVC编译为何未设置该字段?
PE文件可选头CheckSum字段的生成规则
- 并非只有微软官方程序才会设置CheckSum,MSVC完全支持生成该字段,只是默认不开启这个功能。
- Windows对驱动程序(.sys)有强制要求:必须包含有效的CheckSum,否则无法正常加载;系统DLL和核心系统程序也会设置该字段,用于系统层面的完整性校验。
- 使用MSVC编译时,默认链接器不会计算并填充CheckSum,需要手动指定链接器选项:
/RELEASE(或单独的/CHECKSUM选项)。启用该选项后,链接器会自动完成CheckSum的计算和字段填充。 - 普通用户态的EXE、DLL程序没有强制要求设置CheckSum,所以大部分第三方软件的二进制文件该字段为0,这属于正常情况——Windows不会对这类程序做强制校验。
内容的提问来源于stack exchange,提问作者dev65
相关产品推荐
相关产品推荐

