'校验和'的目的是什么?
字段'checksum'是一个32位无符号值,当加到其他魔术字段(即'magic'和'flags')时,必须有一个32位无符号和为零。
dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start))
答案 0 :(得分:2)
目的是验证多引导头实际上是多引导头。幻数0xE85250D6
不足以验证这一点,因为这个幻数可能是偶然出现的,也可能是非多引导可执行文件中的设计。例如,使用多引导可执行文件的程序很容易在其中的某个地方有这个神奇的数字。
其目的不是检测错误,因为仅检查多引导头是否有损坏是没有意义的。如果可能存在损坏,则需要验证整个可执行文件。