public MDStream(MetaDataRoot root) { this.root = root; hdr = new Header(); data = null; heap = null; }
public Image(string name) { this.name = name; open = false; reader = null; mdRoot = null; dosHdr = new DOSHeader(); coffHdr = new COFFHeader(); peHdr = new PEHeader(); corHdr = new CorHeader(); sections = new Hashtable(); sectionsPos = -1; }
/// <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); } }