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) –
elf (elftools.elf.elffile.ELFFile) –
dwarf (elftools.dwarf.dwarfinfo.DWARFInfo) –
symtab (elftools.elf.sections.SymbolTableSection) –
va_symbols (Dict[int, List[elftools.elf.sections.Symbol]]) –
line_program_pairings (bool) –
va_line_entries (Set[mate.build.tob_chess_utils.tools.aspirin.VALineEntry]) –
va_line_func_map (Dict[str, Set[mate.build.tob_chess_utils.tools.aspirin.VALineEntry]]) –
func_epilogue_begin_map (Dict[str, Set[int]]) –
func_prologue_end_map (Dict[str, Set[int]]) –
vi_dicts (List[dict]) –
machine (mate.build.tob_chess_utils.tools.aspirin.MachineInfo) –
formatter (_iced_x86_py.Formatter) –
info_factory (_iced_x86_py.InstructionInfoFactory) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
bb_dict (Dict[str, Any]) –
_migraine_id (str) –
va (int) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
migraine_id (str) –
va (int) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
va_dies (Dict[int, Set[elftools.dwarf.die.DIE]]) –
migraine_id (str) –
va (int) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
global_name (str) –
dies (List[elftools.dwarf.die.DIE]) –
- 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
_asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
stub_name (str) –
va (int) –
- 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
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
bb_dict (Dict[str, Any]) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
bb_dict (Dict[str, Any]) –
- 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
andasp_ctx.func_epilogue_begin_map
with the results.- Parameters
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
func_dict (Dict[str, Any]) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
global_name (str) –
var_die (elftools.dwarf.die.DIE) –
- 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
asp_ctx (mate.build.tob_chess_utils.tools.aspirin.AspirinContext) –
func_name (str) –
var_dict (Dict[str, Any]) –
- 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]]