class Rex::ElfParsey::ElfBase::ElfHeader

Public Class Methods

new(rawdata) click to toggle source
# File lib/rex/elfparsey/elfbase.rb, line 153
def initialize(rawdata)

  # Identify the data encoding and parse ELF Header
  elf_header = ELF32_EHDR_LSB.make_struct

  if !elf_header.from_s(rawdata)
    raise ElfHeaderError, "Couldn't parse ELF Header", caller
  end

  if elf_header.v['e_ident'][EI_DATA,1].unpack('C')[0] == ELFDATA2MSB
    elf_header = ELF32_EHDR_MSB.make_struct

    if !elf_header.from_s(rawdata)
      raise ElfHeaderError, "Couldn't parse ELF Header", caller
    end
  end

  unless [ ELFDATA2LSB, ELFDATA2MSB ].include?(
  elf_header.v['e_ident'][EI_DATA,1].unpack('C')[0])
    raise ElfHeaderError, "Invalid data encoding", caller
  end

  # Identify the file as an ELF object file
  unless elf_header.v['e_ident'][EI_MAG0, 4] == ELFMAG
    raise ElfHeaderError, 'Invalid magic number', caller
  end

  self.struct = elf_header
end

Public Instance Methods

e_ident() click to toggle source
# File lib/rex/elfparsey/elfbase.rb, line 183
def e_ident
  struct.v['e_ident']
end