Пример #1
0
    def from_bytes(b, little=False):
        st_name, b = uint32.from_bytes(b, little=little)
        st_value, b = uint32.from_bytes(b, little=little)
        st_size, b = uint32.from_bytes(b, little=little)
        st_info, b = uint8.from_bytes(b, little=little)
        st_other, b = uint8.from_bytes(b, little=little)
        st_shndx, b = uint16.from_bytes(b, little=little)

        return Elf32_Sym(st_name.integer, st_value.integer, st_size.integer,
                st_info.integer, st_other.integer, st_shndx.integer, little), b
Пример #2
0
 def from_bytes(b):
     e_ident, b = Elf32_e_ident.from_bytes(b)
     # througout this function we rely only on ELF header regarding
     # endianness
     little = e_ident.EI_DATA is ELFDATA.ELFDATA2LSB
     e_type, b = ET.from_bytes(b, little=little)
     e_machine, b = EM.from_bytes(b, little=little)
     # TODO: use Elf*_Word or similar to be able to create second header -
     # Elf64_Ehdr for amd64
     e_version, b = uint32.from_bytes(b, little=little)
     e_entry, b = uint32.from_bytes(b, little=little) # || 64b
     e_phoff, b = uint32.from_bytes(b, little=little) # || 64b
     e_shoff, b = uint32.from_bytes(b, little=little) # || 64b
     e_flags, b = uint32.from_bytes(b, little=little)
     e_ehsize, b = uint16.from_bytes(b, little=little)
     e_phentsize, b = uint16.from_bytes(b, little=little)
     e_phnum, b = uint16.from_bytes(b, little=little)
     e_shentsize, b = uint16.from_bytes(b, little=little)
     e_shnum, b = uint16.from_bytes(b, little=little)
     e_shstrndx, b = uint16.from_bytes(b, little=little)
     Ehdr = Elf32_Ehdr(e_ident=e_ident, e_type=e_type, e_machine=e_machine,
             e_version=e_version.integer, e_entry=e_entry.integer,
             e_phoff=e_phoff.integer, e_shoff=e_shoff.integer,
             e_flags=e_flags.integer, e_ehsize=e_ehsize.integer,
             e_phentsize=e_phentsize.integer, e_phnum=e_phnum.integer,
             e_shentsize=e_shentsize.integer, e_shnum=e_shnum.integer,
             e_shstrndx=e_shstrndx.integer)
     return Ehdr, b