AddressOfEntryPoint 超出文件末尾
AddressOfEntryPoint is beyond the end of the file
我正在尝试了解 COFF header 中的 AddressOfEntryPoint
是什么。
我有一个 "nothing" .NET exe:
class Program
{
public static void Main()
{
}
}
(我将其编译为 x86 应用程序)
我在 COFF header 中为标准字段获得的值是:
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)
为了计算 EntryPoint 在文件中的偏移量,您需要从 .text
部分中减去 BaseOfCode
,同时添加 PointerToRawData
。对于这个文件,最后一个是 0x200
并且根据之前的计算它给出 0x556
指向一个很好的 jmp
到 _CorExeMain
.
我正在尝试了解 COFF header 中的 AddressOfEntryPoint
是什么。
我有一个 "nothing" .NET exe:
class Program
{
public static void Main()
{
}
}
(我将其编译为 x86 应用程序)
我在 COFF header 中为标准字段获得的值是:
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)
为了计算 EntryPoint 在文件中的偏移量,您需要从 .text
部分中减去 BaseOfCode
,同时添加 PointerToRawData
。对于这个文件,最后一个是 0x200
并且根据之前的计算它给出 0x556
指向一个很好的 jmp
到 _CorExeMain
.