/// <summary> /// </summary> public void ReadHeaders() { if (!open) { throw new Exception("You must open image before trying to read it."); } dosHdr.Read(reader); reader.BaseStream.Position = dosHdr.Lfanew; ExeSignature peSig = (ExeSignature) reader.ReadUInt16(); if (peSig != ExeSignature.NT) { throw new Exception ("Invalid image format: cannot find PE signature."); } peSig = (ExeSignature) reader.ReadUInt16(); if (peSig != ExeSignature.NT2) { throw new Exception ("Invalid image format: cannot find PE signature."); } coffHdr.Read(reader); peHdr.Read(reader); sectionsPos = reader.BaseStream.Position; ReadSections(); if (this.IsCLI) { reader.BaseStream.Position = RVAToVA(peHdr.CLIHdrDir.virtAddr); corHdr.Read (reader); mdRoot = new MetaDataRoot(this); reader.BaseStream.Position = RVAToVA(corHdr.MetaData.virtAddr); mdRoot.Read(reader); } }