public PEFile Read(Stream stream) { var dosHeader = DosHeaderReader.Read(stream); uint fillingByteCount = dosHeader.lfanew - DosHeaderReader.DosHeaderSize; byte[] fillingBytes = fillingByteCount > 0 ? new byte[fillingByteCount] : null; stream.CheckedReadBytes(fillingBytes, "seeking to PE header"); stream.CheckedExpect( (byte)'P', (byte)'E', 0, 0, "reading PE singature"); var peHeader = PEHeaderReader.Read(stream); var optionalHeader = OptionalHeaderReader.Read( stream, peHeader.SizeOfOptionalHeader); Section[] sections; if (peHeader.NumberOfSections > 0) { sections = new Section[peHeader.NumberOfSections]; for (int i = 0; i < sections.Length; i++) { sections[i] = SectionHeaderReader.Read(stream); } } else { sections = null; } return(new PEFile { DosHeader = dosHeader, Header = peHeader, OptionalHeader = optionalHeader, Sections = sections }); }
public void Before_Each_Test() { this.target = new SectionHeaderReader(); }