angr.rust.mixins

class angr.rust.mixins.CFAMixin

Bases: object

Control Flow Analysis Mixin

__init__(graph, project)
num_predecessors(block)
get_one_predecessor(block)
Return type:

Block

num_successors(block)
get_one_successor(block)
Return type:

Block

static first_non_label_stmt(block)
Return type:

Statement | None

static last_stmt(block)
Return type:

Statement | None

static replace_stmt(block, stmts, replacement)
terminal_call(block)
Return type:

Call | None

get_call_target(call)
Return type:

str | None

Parameters:

call (Call)

match_call(block_or_stmt, expected, monopolize=True, use_trait_name=True)
class angr.rust.mixins.CFGTransformationMixin

Bases: object

Mixin providing CFG graph transformation operations (block removal, splitting, etc.).

__init__(graph)
update_block_indexes()
remove_jump_target(block, jump_target, jump_target_idx)
Parameters:
remove_false_branch(block)
Parameters:

block (Block)

replace_jump_target(block, old_target, old_target_idx, new_target, new_target_idx)
Parameters:
  • old_target (Const | int | None)

  • old_target_idx (int | None)

  • new_target (Const | int)

  • new_target_idx (int | None)

remove_block(block)
Parameters:

block (Block)

split_block(block, new_head_stmt)
Parameters:

block (Block)

class angr.rust.mixins.DFAMixin

Bases: object

Data Flow Analysis Helper

__init__(graph=None)
collect_stack_defs_at(block)

Collect stack definitions at specific block

collect_callsite_stack_defs(callsite_block, max_blocks=1)

Collect stack variable definitions at a given callsite

static extract_write_to_stack_vvar(stmt)
Return type:

tuple[VirtualVariable | None, Expression | None]

static extract_stack_data_flow(stmt)
find_reg_ptr_to_reg_data_flow(block, reg_vvar)
find_stack_data_flow(block, src_offset, size)
static extract_stack_to_reg_data_flow(stmt)
find_stack_to_reg_data_flow(block, src_offset, size)
get_def_block_and_stmt(data)
class angr.rust.mixins.SRDAMixin

Bases: object

Mixin providing SSA reaching definitions analysis access.

__init__(subject, graph, project)
get_vvar_value(vvar)
Return type:

Expression | None

Parameters:

vvar (VirtualVariable)

get_terminal_vvar_values(vvar, visited=None)
get_terminal_vvar_value(vvar, visited=None)
get_terminal_vvar(vvar, visited=None)
get_stack_vvar_by_insn(stack_offset, addr, block_idx=None, size=None, op_type=ObservationPointType.OP_BEFORE)
Return type:

VirtualVariable | None

Parameters:
  • stack_offset (int)

  • addr (int)

  • block_idx (int | None)

get_stack_vvar_and_offset_by_insn(stack_offset, addr, block_idx=None, op_type=ObservationPointType.OP_BEFORE)
Return type:

tuple[VirtualVariable, int] | tuple[None, None]

Parameters:
  • stack_offset (int)

  • addr (int)

  • block_idx (int | None)

get_vvar_type(vvar)
Return type:

RustSimType | None

get_def_by_vvar(vvar)
class angr.rust.mixins.SSAVariableMixin

Bases: object

Mixin for creating and fixing SSA stack virtual variables.

__init__(context)
Parameters:

context (OptimizationPass)

new_stack_vvar(dst_offset, bits, tags, record=True)
fix_stack_vvar_uses()

Submodules