Exemple #1
0
 public ElfLoader64(ElfImageLoader imgLoader, Elf64_EHdr elfHeader, byte[] rawImage, byte osAbi, byte endianness)
     : base(imgLoader, elfHeader.e_machine, endianness)
 {
     this.Header64 = elfHeader;
     this.osAbi    = osAbi;
     base.rawImage = rawImage;
 }
Exemple #2
0
 public ElfLoader64(IServiceProvider services, Elf64_EHdr elfHeader, byte osAbi, EndianServices endianness, byte[] rawImage)
     : base(services, (ElfMachine)elfHeader.e_machine, endianness, rawImage)
 {
     this.Header64 = elfHeader;
     this.osAbi    = osAbi;
     base.rawImage = rawImage;
 }
Exemple #3
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);
                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}", header32.e_entry);
                trace.Verbose("  e_phoff: {0}", header32.e_phoff);
                trace.Verbose("  e_shoff: {0}", header32.e_shoff);
                trace.Verbose("  e_flags: {0}", 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));
            }
        }
Exemple #4
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);
                trace.Verbose("== ELF header =================");
                trace.Verbose("  e_entry: {0}", header32.e_entry);
                trace.Verbose("  e_phoff: {0}", header32.e_phoff);
                trace.Verbose("  e_shoff: {0}", header32.e_shoff);
                trace.Verbose("  e_flags: {0}", 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, header32, RawImage, endianness));
            }
        }
Exemple #5
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));
            }
        }
Exemple #6
0
 private void Given_ImageHeader(ElfMachine machine)
 {
     eih = new Elf64_EHdr
     {
         e_machine = (ushort)machine,
     };
 }
Exemple #7
0
 public ElfLoader64(ElfImageLoader imgLoader, Elf64_EHdr elfHeader, byte[] rawImage, byte osAbi)
     : base(imgLoader, elfHeader.e_machine)
 {
     this.Header64 = elfHeader;
     this.osAbi = osAbi;
     base.rawImage = rawImage;
     this.ProgramHeaders64 = new List<Elf64_PHdr>();
     this.Relocator = CreateRelocator((ElfMachine)elfHeader.e_machine);
 }