コード例 #1
0
        public ElfLoader CreateLoader()
        {
            var rdr = CreateReader(HEADER_OFFSET);

            if (fileClass == ELFCLASS64)
            {
                var header64 = Elf64_EHdr.Load(rdr);
                return(new ElfLoader64(this, header64, RawImage, osAbi, endianness));
            }
            else
            {
                var header32 = Elf32_EHdr.Load(rdr);
                return(new ElfLoader32(this, header32, RawImage, endianness));
            }
        }
コード例 #2
0
        public ElfLoader CreateLoader()
        {
            var rdr        = CreateReader(HEADER_OFFSET);
            var endianness = this.endianness == ElfLoader.ELFDATA2LSB
                ? EndianServices.Little
                : EndianServices.Big;

            if (fileClass == ELFCLASS64)
            {
                var header64 = Elf64_EHdr.Load(rdr);
                trace.Verbose("== ELF header =================");
                trace.Verbose("  e_entry: {0:X16}", header64.e_entry);
                trace.Verbose("  e_phoff: {0:X16}", header64.e_phoff);
                trace.Verbose("  e_shoff: {0:X16}", header64.e_shoff);
                trace.Verbose("  e_flags: {0:X8}", header64.e_flags);
                trace.Verbose("  e_ehsize: {0}", header64.e_ehsize);
                trace.Verbose("  e_phentsize: {0}", header64.e_phentsize);
                trace.Verbose("  e_phnum: {0}", header64.e_phnum);
                trace.Verbose("  e_shentsize: {0}", header64.e_shentsize);
                trace.Verbose("  e_shnum: {0}", header64.e_shnum);
                trace.Verbose("  e_shstrndx: {0}", header64.e_shstrndx);
                return(new ElfLoader64(this.Services, header64, osAbi, endianness, RawImage));
            }
            else
            {
                var header32 = Elf32_EHdr.Load(rdr);
                trace.Verbose("== ELF header =================");
                trace.Verbose("  e_entry: {0:X8}", header32.e_entry);
                trace.Verbose("  e_phoff: {0:X8}", header32.e_phoff);
                trace.Verbose("  e_shoff: {0:X8}", header32.e_shoff);
                trace.Verbose("  e_flags: {0:X8}", header32.e_flags);
                trace.Verbose("  e_ehsize: {0}", header32.e_ehsize);
                trace.Verbose("  e_phentsize: {0}", header32.e_phentsize);
                trace.Verbose("  e_phnum: {0}", header32.e_phnum);
                trace.Verbose("  e_shentsize: {0}", header32.e_shentsize);
                trace.Verbose("  e_shnum: {0}", header32.e_shnum);
                trace.Verbose("  e_shstrndx: {0}", header32.e_shstrndx);
                return(new ElfLoader32(this.Services, header32, osAbi, endianness, RawImage));
            }
        }