AddressOfEntryPoint不在文件末尾

时间:2018-09-07 13:18:46

标签: .net windows executable portable-executable coff

我试图了解COFF标头中的AddressOfEntryPoint

我没有任何.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

1 个答案:

答案 0 :(得分:0)

为了计算EntryPoint在文件中的偏移量,您需要减去BaseOfCode,还要从PointerToRawData部分中添加.text。对于此文件,最后一个是0x200,根据先前的计算,它得出的是0x556,指向jmp的{​​{1}}。

enter image description here