2025-04-12 18:23:18 +03:00
|
|
|
namespace X86Disassembler.PE.Parsers;
|
2025-04-12 17:12:18 +03:00
|
|
|
|
2025-04-12 18:23:18 +03:00
|
|
|
/// <summary>
|
|
|
|
/// Parser for the File header of a PE file
|
|
|
|
/// </summary>
|
|
|
|
public class FileHeaderParser : IParser<FileHeader>
|
2025-04-12 17:12:18 +03:00
|
|
|
{
|
|
|
|
/// <summary>
|
2025-04-12 18:23:18 +03:00
|
|
|
/// Parse the File header from the binary reader
|
2025-04-12 17:12:18 +03:00
|
|
|
/// </summary>
|
2025-04-12 18:23:18 +03:00
|
|
|
/// <param name="reader">The binary reader positioned at the start of the File header</param>
|
|
|
|
/// <returns>The parsed File header</returns>
|
|
|
|
public FileHeader Parse(BinaryReader reader)
|
2025-04-12 17:12:18 +03:00
|
|
|
{
|
2025-04-12 18:23:18 +03:00
|
|
|
FileHeader header = new FileHeader();
|
|
|
|
|
|
|
|
header.Machine = reader.ReadUInt16();
|
|
|
|
header.NumberOfSections = reader.ReadUInt16();
|
|
|
|
header.TimeDateStamp = reader.ReadUInt32();
|
|
|
|
header.PointerToSymbolTable = reader.ReadUInt32();
|
|
|
|
header.NumberOfSymbols = reader.ReadUInt32();
|
|
|
|
header.SizeOfOptionalHeader = reader.ReadUInt16();
|
|
|
|
header.Characteristics = reader.ReadUInt16();
|
|
|
|
|
|
|
|
return header;
|
2025-04-12 17:12:18 +03:00
|
|
|
}
|
|
|
|
}
|