【发布时间】:2016-08-01 09:47:34
【问题描述】:
指向PE文件中偏移0x3c处的PE头的指针是否总是设置为0x80?
我想知道为什么这个指针会改变。我猜 DOS 标头和存根并没有改变,因为它们是第一次编写的。
PE-header 直接在这些 DOS 工件之后开始,所以 PE-pointer 是否总是设置为 0x80?如果不是,为什么?
【问题讨论】:
标签: windows assembly portable-executable
指向PE文件中偏移0x3c处的PE头的指针是否总是设置为0x80?
我想知道为什么这个指针会改变。我猜 DOS 标头和存根并没有改变,因为它们是第一次编写的。
PE-header 直接在这些 DOS 工件之后开始,所以 PE-pointer 是否总是设置为 0x80?如果不是,为什么?
【问题讨论】:
标签: windows assembly portable-executable
许多程序都有一个Rich signature,它附加在 DOS 存根之后,将 NT 标头向下推一个可变数量。
也完全可以使用不同的 DOS 存根,或者根本不使用。不一定要打印“这个程序不能在DOS模式下运行”,你可以放一个DOS小游戏,一个硬盘刷,打印完全不同的东西,随便你。
如果您小心的话,您甚至可以使用overlap the NT header with the DOS header,因此可以使用
【讨论】:
不,偏移量 0x3c 处的 PE 标头 - 这是 IMAGE_DOS_HEADER.e_lfanew,可以是任何值 >= 0x40
【讨论】: