private List <ImageSectionDescriptor> LoadImageSectionDescriptors(ushort rvaIsds) { var sections = new List <ImageSectionDescriptor>(); var rdr = new LeImageReader(RawImage, rvaIsds); Debug.WriteLine("Isd: Size Pges Start Flags Rva GsId Name"); for (;;) { var isd = new ImageSectionDescriptor(); isd.Size = rdr.ReadLeUInt16(); if (isd.Size == 0) { break; } isd.NumPages = rdr.ReadLeUInt16(); isd.StartVPage = rdr.ReadLeUInt32(); isd.Flags = rdr.ReadLeUInt32(); if (isd.Size > 0x0C) { isd.RvaFile = rdr.ReadLeUInt32(); if (isd.Size > 0x010) { isd.GlobalSectionIdent = rdr.ReadLeUInt32(); var count = rdr.ReadByte(); var sectionName = rdr.ReadBytes(count); isd.SectionName = Encoding.ASCII.GetString(sectionName); } } sections.Add(isd); Debug.WriteLine("{0}", isd); } return(sections); }
private List<ImageSectionDescriptor> LoadImageSectionDescriptors(ushort rvaIsds) { var sections = new List<ImageSectionDescriptor>(); var rdr = new LeImageReader(RawImage, rvaIsds); Debug.WriteLine("Isd: Size Pges Start Flags Rva GsId Name"); for (;;) { var isd = new ImageSectionDescriptor(); isd.Size = rdr.ReadLeUInt16(); if (isd.Size == 0) break; isd.NumPages = rdr.ReadLeUInt16(); isd.StartVPage = rdr.ReadLeUInt32(); isd.Flags = rdr.ReadLeUInt32(); if (isd.Size > 0x0C) { isd.RvaFile = rdr.ReadLeUInt32(); if (isd.Size > 0x010) { isd.GlobalSectionIdent = rdr.ReadLeUInt32(); var count = rdr.ReadByte(); var sectionName = rdr.ReadBytes(count); isd.SectionName = Encoding.ASCII.GetString(sectionName); } } sections.Add(isd); Debug.WriteLine("{0}", isd); } return sections; }