private void Init(Stream stream, string filePath, bool virt) { m_virt = virt; m_stream = stream; m_headerBuff = new PEBuffer(m_stream); Header = new PEHeader(m_headerBuff.Fetch(0, 512), virt); // We did not read in the complete header, Try again using the right sized buffer. if (Header.PEHeaderSize > m_headerBuff.Length) Header = new PEHeader(m_headerBuff.Fetch(0, Header.PEHeaderSize), virt); if (Header.PEHeaderSize > m_headerBuff.Length) throw new InvalidOperationException("Bad PE Header in " + filePath); }
/// <summary> /// Parses a PEFile from a given stream. If it is valid, a new PEFile object is /// constructed and returned. Otherwise, null is returned. /// </summary> public static PEFile TryLoad(Stream stream, bool virt) { PEBuffer headerBuff = new PEBuffer(stream); PEHeader hdr = PEHeader.FromBuffer(headerBuff, virt); if (hdr == null) { return(null); } PEFile pefile = new PEFile(); pefile.Init(stream, "stream", virt, headerBuff, hdr); return(pefile); }
private void Init(Stream stream, string filePath, bool virt, PEBuffer buffer = null, PEHeader header = null) { if (buffer == null) buffer = new PEBuffer(stream); if (header == null) header = PEHeader.FromBuffer(buffer, virt); _virt = virt; _stream = stream; _headerBuff = buffer; Header = header; if (header != null && header.PEHeaderSize > _headerBuff.Length) throw new InvalidOperationException("Bad PE Header in " + filePath); }
internal static bool TryGetIndexProperties(Stream stream, bool virt, out int timestamp, out int filesize) { try { using PEFile pefile = new PEFile(stream, virt); PEHeader header = pefile.Header; timestamp = header.TimeDateStampSec; filesize = (int)header.SizeOfImage; return(true); } catch { timestamp = 0; filesize = 0; return(false); } }
internal static bool TryGetIndexProperties(string filename, out int timestamp, out int filesize) { try { using (PEFile pefile = new PEFile(filename)) { PEHeader header = pefile.Header; timestamp = header.TimeDateStampSec; filesize = (int)header.SizeOfImage; return(true); } } catch { timestamp = 0; filesize = 0; return(false); } }
private void Init(Stream stream, string filePath, bool virt, PEBuffer buffer = null, PEHeader header = null) { if (buffer == null) { buffer = new PEBuffer(stream); } if (header == null) { header = PEHeader.FromBuffer(buffer, virt); } _virt = virt; _stream = stream; _headerBuff = buffer; Header = header; if (header != null && header.PEHeaderSize > _headerBuff.Length) { throw new InvalidOperationException("Bad PE Header in " + filePath); } }