Esempio n. 1
0
        internal static IMAGE_SECTION_HEADER FromBinaryReader(BinaryReader reader)
        {
            IMAGE_SECTION_HEADER ret = new IMAGE_SECTION_HEADER();

            try
            {
                bool allZero = true;
                for (int i = 0; i < IMAGE_SIZEOF_SHORT_NAME; i++)
                {
                    ret.Name[i] = reader.ReadByte();
                    allZero    &= (ret.Name[i] == 0);
                }
                if (allZero)
                {
                    return(null);
                }
                ret.PhysicalAddress      = reader.ReadUInt32();
                ret.VirtualAddress       = reader.ReadUInt32();
                ret.SizeOfRawData        = reader.ReadUInt32();
                ret.PointerToRawData     = reader.ReadUInt32();
                ret.PointerToRelocations = reader.ReadUInt32();
                ret.PointerToLinenumbers = reader.ReadUInt32();
                ret.NumberOfRelocations  = reader.ReadUInt16();
                ret.NumberOfLinenumbers  = reader.ReadUInt16();
                ret.Characteristics      = reader.ReadUInt32();
            }
            catch
            {
                return(null);
            }
            return(ret);
        }
Esempio n. 2
0
 internal static Win32ExeHeader FromBinaryReader(BinaryReader reader)
 {
     try
     {
         long startPosition = reader.BaseStream.Position;
         long length        = reader.BaseStream.Length - startPosition;
         if (length < 0x1000)
         {
             return(null);
         }
         Win32ExeHeader ret = new Win32ExeHeader();
         ret.DosHeader = IMAGE_DOS_HEADER.FromBinaryReader(reader);
         if (ret.DosHeader == null)
         {
             return(null);
         }
         if (ret.DosHeader.e_lfanew <= 0)
         {
             return(ret);
         }
         reader.BaseStream.Seek(startPosition + ret.DosHeader.e_lfanew, SeekOrigin.Begin);
         ret.NtHeader = IMAGE_NT_HEADERS.FromBinaryReader(reader);
         if (ret.NtHeader == null)
         {
             return(null);
         }
         IMAGE_SECTION_HEADER section = IMAGE_SECTION_HEADER.FromBinaryReader(reader);
         while (section != null)
         {
             ret.SectionHeaders.Add(section);
             section = IMAGE_SECTION_HEADER.FromBinaryReader(reader);
         }
         return(ret);
     }
     catch
     {
         return(null);
     }
 }