mate.build.tob_chess_utils.tools.aspirin module

class mate.build.tob_chess_utils.tools.aspirin.AspirinContext(binary, elf, dwarf, symtab, va_symbols, line_program_pairings, va_line_entries, va_line_func_map, func_epilogue_begin_map, func_prologue_end_map, vi_dicts, machine, formatter, info_factory)

Bases: tuple

Parameters
binary: BinaryIO

Alias for field number 0

dwarf: elftools.dwarf.dwarfinfo.DWARFInfo

Alias for field number 2

elf: elftools.elf.elffile.ELFFile

Alias for field number 1

formatter: _iced_x86_py.Formatter

Alias for field number 12

func_epilogue_begin_map: Dict[str, Set[int]]

Alias for field number 8

func_prologue_end_map: Dict[str, Set[int]]

Alias for field number 9

info_factory: _iced_x86_py.InstructionInfoFactory

Alias for field number 13

line_program_pairings: bool

Alias for field number 5

machine: mate.build.tob_chess_utils.tools.aspirin.MachineInfo

Alias for field number 11

symtab: elftools.elf.sections.SymbolTableSection

Alias for field number 3

va_line_entries: Set[mate.build.tob_chess_utils.tools.aspirin.VALineEntry]

Alias for field number 6

va_line_func_map: Dict[str, Set[mate.build.tob_chess_utils.tools.aspirin.VALineEntry]]

Alias for field number 7

va_symbols: Dict[int, List[elftools.elf.sections.Symbol]]

Alias for field number 4

vi_dicts: List[dict]

Alias for field number 10

class mate.build.tob_chess_utils.tools.aspirin.AspirinRecordKind(value)

Bases: str, enum.Enum

An enumeration.

BasicBlock = 'bb'
Function = 'function'
Global = 'global'
Local = 'local'
Module = 'module'
PLTStub = 'plt_stub'
VTable = 'vtable'
class mate.build.tob_chess_utils.tools.aspirin.MachineInfo(arch, addr_len, decoder_bitness)

Bases: tuple

Parameters
  • arch (str) –

  • addr_len (int) –

  • decoder_bitness (int) –

addr_len: int

Alias for field number 1

arch: str

Alias for field number 0

decoder_bitness: int

Alias for field number 2

class mate.build.tob_chess_utils.tools.aspirin.VALineEntry(va, filename, line, column, is_prologue_end, is_epilogue_begin)

Bases: tuple

Parameters
  • va (int) –

  • filename (str) –

  • line (int) –

  • column (int) –

  • is_prologue_end (bool) –

  • is_epilogue_begin (bool) –

column: int

Alias for field number 3

filename: str

Alias for field number 1

is_epilogue_begin: bool

Alias for field number 5

is_prologue_end: bool

Alias for field number 4

line: int

Alias for field number 2

va: int

Alias for field number 0

mate.build.tob_chess_utils.tools.aspirin.aspirin(binary: BinaryIO, vi_dicts: List[Dict[str, Any]], line_program: bool = False) Iterator[Dict[str, Any]]
Parameters
  • binary (BinaryIO) –

  • vi_dicts (List[Dict[str, Any]]) –

  • line_program (bool) –

Return type

Iterator[Dict[str, Any]]

mate.build.tob_chess_utils.tools.aspirin.aspirin_bb_end_record(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, bb_dict: Dict[str, Any], _migraine_id: str, va: int) Dict[str, Any]
Parameters
Return type

Dict[str, Any]

mate.build.tob_chess_utils.tools.aspirin.aspirin_bb_record(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, migraine_id: str, va: int) Optional[Dict[str, Any]]
Parameters
Return type

Optional[Dict[str, Any]]

mate.build.tob_chess_utils.tools.aspirin.aspirin_func_record(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, va_dies: Dict[int, Set[elftools.dwarf.die.DIE]], migraine_id: str, va: int) Optional[Dict[str, Any]]
Parameters
Return type

Optional[Dict[str, Any]]

mate.build.tob_chess_utils.tools.aspirin.aspirin_global_records_for_name(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, global_name: str, dies: List[elftools.dwarf.die.DIE])
Parameters
mate.build.tob_chess_utils.tools.aspirin.aspirin_module_record(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext) Dict[str, Any]
Parameters

asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –

Return type

Dict[str, Any]

mate.build.tob_chess_utils.tools.aspirin.aspirin_plt_stub_record(_asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, stub_name: str, va: int) Dict[str, Any]
Parameters
Return type

Dict[str, Any]

mate.build.tob_chess_utils.tools.aspirin.build_va_line_entries(elf: elftools.elf.elffile.ELFFile) Set[mate.build.tob_chess_utils.tools.aspirin.VALineEntry]
Parameters

elf (elftools.elf.elffile.ELFFile) –

Return type

Set[mate.build.tob_chess_utils.tools.aspirin.VALineEntry]

mate.build.tob_chess_utils.tools.aspirin.lpe_filename(file_index: int, lp_header: Any) str
Parameters
  • file_index (int) –

  • lp_header (Any) –

Return type

str

mate.build.tob_chess_utils.tools.aspirin.main() None
Return type

None

mate.build.tob_chess_utils.tools.aspirin.pair_bb_instructions(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, bb_dict: Dict[str, Any]) None

Pair the given basic block record with information about each x86(_64) instruction within it, in order of appearance.

Parameters
Return type

None

mate.build.tob_chess_utils.tools.aspirin.pair_bb_line_entries(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, bb_dict: Dict[str, Any]) None

Pair the given basic block record with its line program entries, modifying the record in the process, if requested via asp_ctx.line_program_pairings.

Parameters
Return type

None

mate.build.tob_chess_utils.tools.aspirin.pair_function_line_entries(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, func_dict: Dict[str, Any]) None

Pair the given function record with its line program entries.

Adds the entries to the function record, if requested. Otherwise, updates asp_ctx.va_line_func_map and asp_ctx.func_epilogue_begin_map with the results.

Parameters
Return type

None

mate.build.tob_chess_utils.tools.aspirin.pair_global_type_information(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, global_name: str, var_die: elftools.dwarf.die.DIE) Optional[Dict[str, Any]]
Parameters
Return type

Optional[Dict[str, Any]]

mate.build.tob_chess_utils.tools.aspirin.pair_local_type_information(asp_ctx: mate.build.tob_chess_utils.tools.aspirin.AspirinContext, func_name: str, var_dict: Dict[str, Any]) None
Parameters
Return type

None

mate.build.tob_chess_utils.tools.aspirin.parse_migraine_addrs(migraine_addrs: bytes) Iterator[Tuple[str, int]]
Parameters

migraine_addrs (bytes) –

Return type

Iterator[Tuple[str, int]]