2016-08-01 117 views

回答

2

否,则在偏移为0x3C PE-头 - 这是IMAGE_DOS_HEADER.e_lfanew其可以是任何值> = 0x40的

8

许多程序具有其在DOS存根后所附,由推NT标头向下一个Rich signature可变金额。

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

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

+0

谢谢,我的PE图表都没有显示Rich签名。此外,DOS存根(stub)不是PE标准的一部分(我的意思是它的内容)? – Shuzheng

+1

@NicolasLykkeIversen 我100%确定你可以放在任何你想要的DOS存根(只要它是正确的DOS可执行文件,它将被正确运行)。一些简单的应用程序甚至使用它来提供多平台可执行文件,因此它可以在DOS和Windows中运行。 – Ped7g