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)); } }
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)); } }
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)); } }
public ElfLoader32(ElfImageLoader imgLoader, Elf32_EHdr header32, byte[] rawImage, byte endianness) : base(imgLoader, header32.e_machine, endianness) { this.Header = header32 ?? throw new ArgumentNullException(nameof(header32)); this.rawImage = rawImage; }
public ElfLoader32(IServiceProvider services, Elf32_EHdr header32, byte osAbi, EndianServices endianness, byte[] rawImage) : base(services, (ElfMachine)header32.e_machine, endianness, rawImage) { this.Header = header32 ?? throw new ArgumentNullException(nameof(header32)); }
private void Given_ImageHeader(ElfMachine machine) { eih = new Elf32_EHdr { e_machine = (ushort)machine, }; }
public ElfLoader32(ElfImageLoader imgLoader, Elf32_EHdr header32, byte[] rawImage) : base(imgLoader, header32.e_machine) { if (header32 == null) throw new ArgumentNullException("header32"); this.Header = header32; this.ProgramHeaders = new List<Elf32_PHdr>(); this.Relocator = CreateRelocator((ElfMachine)header32.e_machine); this.rawImage = rawImage; }