objutils.elf package

Subpackages

Submodules

objutils.elf.attributes module

objutils.elf.defs module

class objutils.elf.defs.ELFAbiType

Bases: enum.IntEnum

An enumeration.

ELFOSABI_AIX = 7
ELFOSABI_ARM = 97
ELFOSABI_AROS = 15
ELFOSABI_C6000_ELFABI = 64
ELFOSABI_C6000_LINUX = 65
ELFOSABI_FENIXOS = 16
ELFOSABI_FREEBSD = 9
ELFOSABI_GNU = 3
ELFOSABI_HPUX = 1
ELFOSABI_IRIX = 8
ELFOSABI_LINUX = 3
ELFOSABI_MODESTO = 11
ELFOSABI_NETBSD = 2
ELFOSABI_NONE = 0
ELFOSABI_NSK = 14
ELFOSABI_OPENBSD = 12
ELFOSABI_OPENVMS = 13
ELFOSABI_SOLARIS = 6
ELFOSABI_STANDALONE = 255
ELFOSABI_TRU64 = 10
class objutils.elf.defs.ELFClass

Bases: enum.IntEnum

An enumeration.

ELFCLASS32 = 1
ELFCLASS64 = 2
ELFCLASSNONE = 0
class objutils.elf.defs.ELFDataEncoding

Bases: enum.IntEnum

An enumeration.

ELFDATA2LSB = 1
ELFDATA2MSB = 2
ELFDATANONE = 0
class objutils.elf.defs.ELFMachineType

Bases: enum.IntEnum

An enumeration.

EM_386 = 3
EM_68HC05 = 72
EM_68HC08 = 71
EM_68HC11 = 70
EM_68HC12 = 53
EM_68HC16 = 69
EM_68K = 4
EM_860 = 7
EM_88K = 5

RESERVED 6 Reserved for future use

EM_960 = 19
EM_AARCH64 = 183
EM_ADAPTEVA_EPIPHANY = 4643
EM_ALPHA = 41
EM_ALPHA_NO_ABI = 36902
EM_ALTERA_NIOS2 = 113
EM_ARC = 45
EM_ARCA = 109
EM_ARC_A5 = 93
EM_ARM = 40
EM_AVR = 83
EM_AVR32 = 185
EM_AVR_OLD = 4183
EM_BLACKFIN = 106
EM_C166 = 116
EM_CE = 119
EM_COLDFIRE = 52
EM_COOLRISC_C816 = 51222
EM_CR = 103
EM_CR16 = 177
EM_CRAYNV2 = 172
EM_CRIS = 76
EM_CRX = 114
EM_CUDA = 190
EM_CYGNUS_D10V = 30288
EM_CYGNUS_D30V = 30326
EM_CYGNUS_FR30 = 13104
EM_CYGNUS_FRV = 21569
EM_CYGNUS_M32R = 36929
EM_CYGNUS_MEP = 61453
EM_CYGNUS_MN10200 = 57005
EM_CYGNUS_MN10300 = 48879
EM_CYGNUS_POWERPC = 36901
EM_CYGNUS_V850 = 36992
EM_CYPRESS_M8C = 161
EM_D10V = 85
EM_D30V = 86
EM_DLX = 23205
EM_DSP24 = 136
EM_DSPIC30F = 118
EM_DXP = 112
EM_ECOG1 = 168
EM_ECOG16 = 176
EM_ECOG1X = 168
EM_ECOG2 = 134
EM_ETPU = 178
EM_EXCESS = 111
EM_F2MC16 = 104
EM_FIREPATH = 78
EM_FR20 = 37
EM_FR30 = 84
EM_FX66 = 66
EM_H8S = 48
EM_H8_300 = 46
EM_H8_300H = 47
EM_H8_500 = 49
EM_HUANY = 81
EM_I8051 = 165
EM_IA_64 = 50
EM_IP2K = 101
EM_IP2K_OLD = 33303
EM_IQ2000 = 65210
EM_JAVELIN = 77
EM_L1OM = 180
EM_LATTICEMICO32 = 138
EM_M16C = 117
EM_M32 = 1
EM_M32C = 120
EM_M32C_OLD = 65200
EM_M32R = 88
EM_MANIK = 171
EM_MAX = 102
EM_MAXQ30 = 169
EM_MCST_ELBRUS = 175
EM_ME16 = 59
EM_METAG = 174
EM_MICROBLAZE = 189
EM_MICROBLAZE_OLD = 47787
EM_MIPS = 8
EM_MIPS_RS3_LE = 10

RESERVED 11-14 Reserved for future use

EM_MIPS_X = 51
EM_MMA = 54
EM_MMDSP_PLUS = 160
EM_MMIX = 80
EM_MN10200 = 90
EM_MN10300 = 89
EM_MOXIE = 65261
EM_MSP430 = 105
EM_MSP430_OLD = 4185
EM_MT = 9520
EM_NCPU = 56
EM_NDR1 = 57
EM_NDS32 = 167
EM_NEC_V850 = 29246
EM_NIOS32 = 65211
EM_NONE = 0
EM_NS32K = 97
EM_OPENRISC = 92
EM_OPENRISC_OLD = 13350
EM_OR32 = 33906
EM_PARISC = 15
EM_PCP = 55
EM_PDP10 = 64
EM_PDP11 = 65
EM_PDSP = 63
EM_PJ = 91
EM_PPC = 20
EM_PPC64 = 21
EM_PRISM = 82
EM_QDSP6 = 164
EM_R32C = 162
EM_RCE = 39
EM_RH32 = 38
EM_RS08 = 132
EM_RX = 173
EM_S370 = 9
EM_S390 = 22
EM_S390_OLD = 41872
EM_SCORE = 135
EM_SCORE7 = 135
EM_SEP = 108
EM_SE_C17 = 139
EM_SE_C33 = 107
EM_SH = 42
EM_SLE9X = 179
EM_SNP1K = 99
EM_SPARC = 2
EM_SPARC32PLUS = 18
EM_SPARCV9 = 43
EM_SPU = 23

RESERVED 24-35 Reserved for future use

EM_ST100 = 60
EM_ST19 = 74
EM_ST200 = 100
EM_ST7 = 68
EM_ST9PLUS = 67
EM_STARCORE = 58
EM_STM8 = 186
EM_STXP7X = 166
EM_SVX = 73
EM_TILE64 = 187
EM_TILEGX = 191
EM_TILEPRO = 188
EM_TINYJ = 61
EM_TI_C2000 = 141
EM_TI_C5500 = 142
EM_TI_C6000 = 140
EM_TMM_GPP = 96
EM_TPC = 98
EM_TRICORE = 44
EM_TRIMEDIA = 163
EM_TSK3000 = 131
EM_UNICORE = 110
EM_V800 = 36
EM_V850 = 87
EM_VAX = 75
EM_VIDEOCORE = 95
EM_VIDEOCORE3 = 137
EM_VPP500 = 17
EM_X86_64 = 62
EM_XC16X = 18056
EM_XGATE = 115
EM_XIMO16 = 170
EM_XSTORMY16 = 44357
EM_XTENSA = 94
EM_XTENSA_OLD = 43975
EM_ZSP = 79
RESERVED = 16
class objutils.elf.defs.ELFType

Bases: enum.IntEnum

An enumeration.

ET_CORE = 4

Core file

ET_DYN = 3

Shared object file

ET_EXEC = 2

Executable file

ET_HIOS = 65279

Operating system-specific

ET_HIPROC = 65535

Processor-specific

ET_LOOS = 65024

Operating system-specific

ET_LOPROC = 65280

Processor-specific

ET_NONE = 0

No file type

ET_NUM = 5

Number of defined types

ET_REL = 1

Relocatable file

class objutils.elf.defs.Elf32_Ehdr(e_type, e_machine, e_version, e_entry, e_phoff, e_shoff, e_flags, e_ehsize, e_phentsize, e_phnum, e_shentsize, e_shnum, e_shstrndx)

Bases: tuple

e_ehsize

Alias for field number 7

e_entry

Alias for field number 3

e_flags

Alias for field number 6

e_machine

Alias for field number 1

e_phentsize

Alias for field number 8

e_phnum

Alias for field number 9

e_phoff

Alias for field number 4

e_shentsize

Alias for field number 10

e_shnum

Alias for field number 11

e_shoff

Alias for field number 5

e_shstrndx

Alias for field number 12

e_type

Alias for field number 0

e_version

Alias for field number 2

objutils.elf.defs.Elf32_Sym

alias of objutils.elf.defs.Elf_Sym

objutils.elf.defs.Elf64_Sym

alias of objutils.elf.defs.Elf_Sym

class objutils.elf.defs.Elf_Shdr(sh_name, sh_type, sh_flags, sh_addr, sh_offset, sh_size, sh_link, sh_info, sh_addralign, sh_entsize)

Bases: tuple

sh_addr

Alias for field number 3

sh_addralign

Alias for field number 8

sh_entsize

Alias for field number 9

sh_flags

Alias for field number 2

sh_info

Alias for field number 7

Alias for field number 6

sh_name

Alias for field number 0

sh_offset

Alias for field number 4

sh_size

Alias for field number 5

sh_type

Alias for field number 1

class objutils.elf.defs.NoteSegmentDescriptorCore

Bases: enum.IntEnum

Legal values for note segment descriptor types for core files.

NT_386_IOPERM = 513
NT_386_TLS = 512
NT_ASRS = 8
NT_AUXV = 6
NT_FPREGSET = 2
NT_GWINDOWS = 7
NT_LWPSINFO = 17
NT_LWPSTATUS = 16
NT_PLATFORM = 5
NT_PPC_SPE = 257
NT_PPC_VMX = 256
NT_PPC_VSX = 258
NT_PRCRED = 14
NT_PRFPXREG = 20
NT_PRPSINFO = 3
NT_PRSTATUS = 1
NT_PRXFPREG = 1189489535
NT_PRXREG = 4
NT_PSINFO = 13
NT_PSTATUS = 10
NT_TASKSTRUCT = 4
NT_UTSNAME = 15
NT_X86_XSTATE = 514
class objutils.elf.defs.NoteSegmentDescriptorObject

Bases: enum.IntEnum

Legal values for the note segment descriptor types for object files.

NT_VERSION = 1
class objutils.elf.defs.SectionFlags

Bases: enum.IntEnum

An enumeration.

SHF_ALLOC = 2
SHF_COMPRESSED = 2048
SHF_EXCLUDE = 2147483648
SHF_EXECINSTR = 4
SHF_GROUP = 512
SHF_MASKOS = 267386880
SHF_MASKPROC = 4026531840
SHF_MERGE = 16
SHF_ORDERED = 1073741824
SHF_OS_NONCONFORMING = 256
SHF_STRINGS = 32
SHF_TLS = 1024
SHF_WRITE = 1
class objutils.elf.defs.SectionName

Bases: enum.IntEnum

An enumeration.

SHN_ABS = 65521
SHN_AFTER = 65281
SHN_BEFORE = 65280
SHN_COMMON = 65522
SHN_HIOS = 65343
SHN_HIPROC = 65311
SHN_HIRESERVE = 65535
SHN_IA_64_ANSI_COMMON = 65280
SHN_LOOS = 65312
SHN_LOPROC = 65280
SHN_LORESERVE = 65280
SHN_UNDEF = 0
SHN_XINDEX = 65535
class objutils.elf.defs.SectionType

Bases: enum.IntEnum

SHT_ARM_ATTRIBUTES = 1879048195
SHT_ARM_DEBUGOVERLAY = 1879048196
SHT_ARM_EXIDX = 1879048193
SHT_ARM_OVERLAYSECTION = 1879048197
SHT_ARM_PREEMPTMAP = 1879048194
SHT_CHECKSUM = 1879048184
SHT_DYNAMIC = 6
SHT_DYNSYM = 11
SHT_FINI_ARRAY = 15
SHT_GNU_ATTRIBUTES = 1879048181
SHT_GNU_HASH = 1879048182
SHT_GNU_INCREMENTAL_INPUTS = 1879000832
SHT_GNU_LIBLIST = 1879048183
SHT_GNU_verdef = 1879048189
SHT_GNU_verneed = 1879048190
SHT_GNU_versym = 1879048191
SHT_GROUP = 17
SHT_HASH = 5
SHT_HIOS = 1879048191
SHT_HIPROC = 2147483647
SHT_HISUNW = 1879048191
SHT_HIUSER = 4294967295
SHT_INIT_ARRAY = 14
SHT_LOOS = 1610612736
SHT_LOPROC = 1879048192
SHT_LOSUNW = 1879048186
SHT_LOUSER = 2147483648
SHT_NOBITS = 8
SHT_NOTE = 7
SHT_NULL = 0
SHT_NUM = 19
SHT_PREINIT_ARRAY = 16
SHT_PROGBITS = 1
SHT_REL = 9
SHT_RELA = 4
SHT_SHLIB = 10
SHT_STRTAB = 3
SHT_SUNW_COMDAT = 1879048187
SHT_SUNW_move = 1879048186
SHT_SUNW_syminfo = 1879048188
SHT_SYMTAB = 2
SHT_SYMTAB_SHNDX = 18
class objutils.elf.defs.SymbolBinding

Bases: enum.IntEnum

An enumeration.

STB_GLOBAL = 1
STB_GNU_UNIQUE = 10
STB_HIPROC = 15
STB_LOCAL = 0
STB_LOPROC = 13
STB_WEAK = 2
class objutils.elf.defs.SymbolType

Bases: enum.IntEnum

An enumeration.

STT_COMMON = 5
STT_FILE = 4
STT_FUNC = 2
STT_GNU_IFUNC = 10
STT_HIPROC = 15
STT_LOPROC = 13
STT_NOTYPE = 0
STT_OBJECT = 1
STT_RELC = 8
STT_SECTION = 3
STT_SRELC = 9
STT_TLS = 6
class objutils.elf.defs.SymbolVisibility

Bases: enum.IntEnum

Symbol visibility specification encoded in the st_other field.

STV_DEFAULT = 0
STV_HIDDEN = 2
STV_INTERNAL = 1
STV_PROTECTED = 3
objutils.elf.defs.special_section_name(ndx)

objutils.elf.elfcons module

objutils.elf.relocs module

objutils.elf.testblocks module

Module contents

class objutils.elf.DBAPI(parent)

Bases: object

query
session
class objutils.elf.DebugInfo(section, image)

Bases: tuple

image

Alias for field number 1

section

Alias for field number 0

class objutils.elf.ElfFileStruct(*args, **kws)

Bases: construct.core.Struct

elf32Addr()
setByteOrder()
class objutils.elf.ElfParser(filename)

Bases: object

BasicHeader = <Struct>
DATATYPES32 = {'Addr': (<FormatField>, <FormatField>), 'Half': (<FormatField>, <FormatField>), 'Off': (<FormatField>, <FormatField>), 'Sword': (<FormatField>, <FormatField>), 'Sxword': (None, None), 'Word': (<FormatField>, <FormatField>), 'Xword': (<FormatField>, <FormatField>)}
DATATYPES64 = {'Addr': (<FormatField>, <FormatField>), 'Half': (<FormatField>, <FormatField>), 'Off': (<FormatField>, <FormatField>), 'Sword': (<FormatField>, <FormatField>), 'Sxword': (<FormatField>, <FormatField>), 'Word': (<FormatField>, <FormatField>), 'Xword': (<FormatField>, <FormatField>)}
EI_NIDENT = 16
arm_attributes
comment
create_section_to_segment_mapping()
debug_sections()
e_ehsize
e_entry
e_flags
e_machine
e_phentsize
e_phnum
e_phoff
e_shentsize
e_shnum
e_shoff
e_shstrndx
e_type
e_version
ei_abiversion
ei_class
ei_data
ei_osabi
ei_version
endianess
get_basic_header_field(name)
get_extended_header_field(name)
get_string(table_index, entry)
header_bytes
notes
query
section_in_segment(section_header, segment)
section_in_segment1(section_header, segment, check_vma, strict)
section_in_segment_strict(section_header, segment)
section_size(section_header, segment)
segments
tbss_special(section_header, segment)
class objutils.elf.ListToBytesAdapter(subcon)

Bases: construct.core.Adapter

class objutils.elf.PrintContext

Bases: construct.core.Construct

class objutils.elf.SectionAPI(parent)

Bases: objutils.elf.DBAPI

fetch(sections: str = None, name_pattern: str = None, order_by_address: bool = True)
get(section_name: str)

Get a single section.

Parameters:section_name (str) –
class objutils.elf.SymbolAPI(parent)

Bases: objutils.elf.DBAPI

fetch(sections: str = None, name_pattern: str = None, bindings: str = None, access: str = None, types_str: str = None, order_by_value: bool = True)
fetch_gcc_special_symbols()

Note

This is a GCC specific feature and will not work with other compilers.

get(symbol_name: str, section_name: str = None)

Get a single symbol.

Parameters:
  • symbol_name (str or list of strings.) – Symbol(s) to look for.
  • section_name (str) – Consider only named section, else lookup all sections.
objutils.elf.UTCTimeStamp(name)
class objutils.elf.UTCTimeStampAdapter(subcon)

Bases: construct.core.Adapter

objutils.elf.calculate_crypto_hash(data)