PE文件中偏移量为0x3c的PE头的指针是否始终设置为0x80?

PE文件中偏移量为0x3c的PE头的指针是否始终设置为0x80?

我想知道为什么这个指针会改变。 我想DOS标题和存根没有改变,因为他们是第一次写。

PE-header直接在这些DOS工件之后启动,PE指针始终设置为0x80? 如果没有,为什么?

许多程序都有一个Rich签名 ,它附加在DOS存根后面,将NT标头按可变的数量向下推。

完全可以使用不同的DOS存根,或根本不存在。 它不需要打印“这个编程不能在DOS模式下运行”,你可以在那里放一个小型的DOS游戏,一个硬盘刷,打印完全不同的东西,不管你想要什么。

你甚至可以,如果你小心, 重叠NT头与DOS头 ,因此使用偏移量<0x40。 这甚至不是太难,因为只有重要的DOS头部分是e_lfanew和“MZ”,其他所有东西都可以使NT头文件起作用。 你只需要将e_lfanew与可以安全地拥有该值的NT标头的一部分对齐。

否,偏移量为0x3c的PE头 – 这是IMAGE_DOS_HEADER.e_lfanew,可以是任何值> = 0x40