angr.analyses.s_reaching_definitions

class angr.analyses.s_reaching_definitions.SRDAModel

Bases: object

The model for SRDA.

__init__(func_graph, func_args, arch)
add_vvar_use(vvar_id, expr, loc)
Return type:

None

Parameters:
property all_definitions: Iterator[Definition[VirtualVariable, AILCodeLocation]]
is_phi_vvar_id(idx)
Return type:

bool

Parameters:

idx (int)

get_all_definitions(block_loc)
Return type:

set[Definition[VirtualVariable | Tmp, AILCodeLocation]]

Parameters:

block_loc (AILCodeLocation)

get_all_tmp_definitions(block_loc)
Return type:

set[Definition[Tmp, AILCodeLocation]]

Parameters:

block_loc (Address)

get_uses_by_location(loc, exprs=False)
Overloads:
  • self, loc (AILCodeLocation), exprs (Literal[True]) → set[tuple[Definition[atoms.VirtualVariable, AILCodeLocation], Any | None]]

  • self, loc (AILCodeLocation), exprs (Literal[False]) → set[Definition[atoms.VirtualVariable, AILCodeLocation]]

Parameters:
Return type:

set[Definition[VirtualVariable, AILCodeLocation]] | set[tuple[Definition[VirtualVariable, AILCodeLocation], Any | None]]

Retrieve all definitions that are used at a given location.

Parameters:
Returns:

A set of definitions that are used at the given location.

Return type:

set[Definition[VirtualVariable, AILCodeLocation]] | set[tuple[Definition[VirtualVariable, AILCodeLocation], Any | None]]

get_vvar_uses(obj)
Return type:

set[AILCodeLocation]

Parameters:

obj (VirtualVariable | VirtualVariable)

get_vvar_uses_with_expr(obj)
Return type:

set[tuple[VirtualVariable | None, AILCodeLocation]]

Parameters:

obj (VirtualVariable | VirtualVariable)

get_tmp_uses(obj, block_loc)
Return type:

set[AILCodeLocation]

Parameters:
  • obj (Tmp)

  • block_loc (Address)

get_uses_by_def(def_)
Return type:

set[AILCodeLocation]

Parameters:

def_ (Definition[VirtualVariable | Tmp, AILCodeLocation])

class angr.analyses.s_reaching_definitions.SRDAView

Bases: object

A view of SRDA model that provides various functionalities for querying the model.

__init__(model)
Parameters:

model (SRDAModel)

get_reg_vvar_by_stmt(reg_offset, min_size, block_addr, block_idx, stmt_idx, op_type)
Return type:

VirtualVariable | None

Parameters:
get_stack_vvar_by_stmt(stack_offset, size, block_addr, block_idx, stmt_idx, op_type)
Return type:

VirtualVariable | None

Parameters:
get_reg_vvar_by_insn(reg_offset, min_size, addr, op_type, block_idx=None)
Return type:

VirtualVariable | None

Parameters:
get_stack_vvar_by_insn(stack_offset, size, addr, op_type, block_idx=None)
Return type:

VirtualVariable | None

Parameters:
get_vvar_value(vvar)
Return type:

Expression | None

Parameters:

vvar (VirtualVariable)

observe(observation_points)
Parameters:

observation_points (list[tuple[Literal['insn', 'node', 'stmt', 'exit'], int | tuple[int, int] | tuple[int, int, int], ~angr.knowledge_plugins.key_definitions.constants.ObservationPointType]])

class angr.analyses.s_reaching_definitions.SReachingDefinitionsAnalysis

Bases: Analysis

Constant and expression propagation that only supports SSA AIL graphs.

__init__(subject, func_addr=None, func_graph=None, func_args=None, use_callee_saved_regs_at_return=False, track_tmps=False)

Submodules