Example #1
0
        internal CLRMetaDataHeader(CLRMetaData metaData)
        {
            long offset = metaData.Location.Offset;
            Stream stream = metaData.Content.Section.Sections.Reader.GetStream();

            stream.Seek(offset,SeekOrigin.Begin);

            MetaData = metaData;
            Signature = Utils.ReadUInt32(stream);

            if (Signature != CLR_METADATA_SIGNATURE)
                throw new ExeReaderException("Incorrect signature found in CLR meta-data header.");

            MajorVersion = Utils.ReadUInt16(stream);
            MinorVersion = Utils.ReadUInt16(stream);
            Reserved = Utils.ReadUInt32(stream);
            VersionLength = Utils.ReadUInt32(stream);
            Version = Utils.ReadString(stream,VersionLength);
            Flags = Utils.ReadUInt16(stream);
            Streams = Utils.ReadUInt16(stream);

            long size = stream.Position - offset;

            Location = new StreamLocation(offset,size);
        }
Example #2
0
        internal CLRContent(DataDirectory dataDirectory, Section section) : base(dataDirectory,section)
        {
            long offset = section.RVAToOffset(dataDirectory.VirtualAddress);

            location = new StreamLocation(offset,dataDirectory.Size);
            header = new CLRHeader(this,dataDirectory);
            meta_data = null;
        }