AddressOfEntryPoint находится за концом файла - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь понять, что такое AddressOfEntryPoint в заголовке COFF.

У меня "Ничего" .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

AddressOfEntryPoint равно 0x2356.

Файл не достаточно длинный для того, чтобы это значение было смещением из любого места, и что это такое?

(Файлы в: https://drive.google.com/open?id=1VClORkJKyGhd7o3YBPbCZEni1ad_mncl)

1 Ответ

0 голосов
/ 09 сентября 2018

Чтобы рассчитать смещение EntryPoint в файле, необходимо вычесть BaseOfCode, но также добавить PointerToRawData из .text сечения. Для этого файла последний - 0x200, а с предыдущими вычислениями он дает 0x556, что указывает на хороший jmp до _CorExeMain.

enter image description here

...