Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 6
0
        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);
            }
        }