示例#1
0
文件: PEData.cs 项目: GeGuNa/mona-os
        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();
        }
示例#2
0
文件: PEData.cs 项目: GeGuNa/mona-os
 private void Init()
 {
     this.data   = null;
     this.rva    = null;
     this.idxm   = null;
     this.pe1    = null;
     this.pe2    = null;
     this.pe3    = null;
     this.pe4    = null;
     this.imptbl = null;
     this.sects  = null;
     this.cli    = null;
     this.mdroot = null;
 }