首页 > 解决方案 > AddressOfEntryPoint 超出文件末尾

问题描述

我试图了解AddressOfEntryPointCOFF 标头中的内容。

我有一个“一无所有”的 .NET exe:

class Program
{
    public static void Main()
    {
    }
}

(我已将其编译为 x86 应用程序)

我为 COFF 标头中的标准字段获得的值是:

COFF - Optional Header Standard Fields
======================================

UInt16    Magic                         0x0000010B
Byte      MajorLinkerVersion            0x30
Byte      MinorLinkerVersion            0x0
UInt32    SizeOfCode                    0x0400
UInt32    SizeOfInitializedData         0x0800
UInt32    SizeOfUninitializedData       0x0000
UInt32    AddressOfEntryPoint           0x2356
UInt32    BaseOfCode                    2000
UInt32    BaseOfData                    4000

AddressOfEntryPoint0x2356。_

该文件的长度不足以使该值成为任何地方的偏移量,那么它是什么?

(文件位于: https ://drive.google.com/open?id=1VClORkJKyGhd7o3YBPbCZEni1ad_mncl )

标签: .netwindowsexecutableportable-executablecoff

解决方案


为了计算文件中 EntryPoint 的偏移量,您需要从节中减去BaseOfCode但还要加上。对于这个文件,最后一个是,根据前面的计算,它给出了一个很好的指向.PointerToRawData.text0x2000x556jmp_CorExeMain

在此处输入图像描述


推荐阅读