ここにクラスの説明を書きます。
Inheritance: HeaderBase
Example #1
0
        private void SetStreamHeader(StreamHeader sh)
        {
            switch (sh.Name)
            {
            case "#~":
                this.tilde      = sh;
                this.sharpTilde = new SharpTildeStream();
                this.sharpTilde.ReadData(this.data, this.mdroot.GetOffset() + sh.Offset);
                break;

            case "#Strings":
                this.strings            = sh;
                this.idxm.StringsOffset = sh.GetDataOffset();
                break;

            case "#US":
                this.usrstr        = sh;
                this.idxm.USOffset = sh.GetDataOffset();
                break;

            case "#GUID":
                this.guid            = sh;
                this.idxm.GUIDOffset = sh.GetDataOffset();
                break;

            case "#Blob":
                this.blob            = sh;
                this.idxm.BlobOffset = sh.GetDataOffset();
                break;
            }
        }
Example #2
0
        private void ReadCLIHeader()
        {
            int addr_cli = RVAManager.GetAddress(this.pe4.CLIHeader);

            if (addr_cli == 0)
            {
                return;
            }
            cli = new CLIHeader();
            this.cli.ReadData(this.data, this.rva.ConvertToPhysical(addr_cli));
            int offset = this.rva.ConvertToPhysical(RVAManager.GetAddress(this.cli.MetaData));

            this.mdroot = new MetadataRoot();
            this.mdroot.ReadData(this.data, offset);
            offset += this.mdroot.Length + 18;
            int nStreams = Util.GetInt16(this.data, offset);

            offset   += 2;
            this.idxm = new IndexManager(this.data, this.rva);
            for (int i = 0; i < nStreams; i++)
            {
                StreamHeader sh = new StreamHeader();
                sh.mdroot = mdroot;
                sh.ReadData(this.data, offset);
                offset += sh.GetStreamSize();
                this.SetStreamHeader(sh);
            }
            this.ReadTilde();
        }
Example #3
0
 private void ReadCLIHeader()
 {
     int addr_cli = RVAManager.GetAddress(this.pe4.CLIHeader);
     if (addr_cli == 0) return;
     cli = new CLIHeader();
     this.cli.ReadData(this.data, this.rva.ConvertToPhysical(addr_cli));
     int offset = this.rva.ConvertToPhysical(RVAManager.GetAddress(this.cli.MetaData));
     this.mdroot = new MetadataRoot();
     this.mdroot.ReadData(this.data, offset);
     offset += this.mdroot.Length + 18;
     int nStreams = Util.GetInt16(this.data, offset);
     offset += 2;
     this.idxm = new IndexManager(this.data, this.rva);
     for (int i = 0; i < nStreams; i++)
     {
         StreamHeader sh = new StreamHeader();
         sh.mdroot = mdroot;
         sh.ReadData(this.data, offset);
         offset += sh.GetStreamSize();
         this.SetStreamHeader(sh);
     }
     this.ReadTilde();
 }
Example #4
0
 private void SetStreamHeader(StreamHeader sh)
 {
     switch (sh.Name)
     {
         case "#~":
         this.tilde = sh;
         this.sharpTilde = new SharpTildeStream();
         this.sharpTilde.ReadData(this.data, this.mdroot.GetOffset() + sh.Offset);
         break;
         case "#Strings":
         this.strings = sh;
         this.idxm.StringsOffset = sh.GetDataOffset();
         break;
         case "#US":
         this.usrstr = sh;
         this.idxm.USOffset = sh.GetDataOffset();
         break;
         case "#GUID":
         this.guid = sh;
         this.idxm.GUIDOffset = sh.GetDataOffset();
         break;
         case "#Blob":
         this.blob = sh;
         this.idxm.BlobOffset = sh.GetDataOffset();
         break;
     }
 }