angr.analyses.decompiler.structuring.structurer_base

class angr.analyses.decompiler.structuring.structurer_base.StructurerBase

Bases: Analysis

The base class for analysis passes that structures a region.

The current function graph is provided so that we can detect certain edge cases, for example, jump table entries no longer exist due to empty node removal during structuring or prior steps.

NAME: str = 'StructurerBase'
__init__(region, parent_map=None, condition_processor=None, func=None, case_entry_to_switch_head=None, parent_region=None, jump_tables=None, ail_manager=None, **kwargs)
Parameters:
static remove_redundant_jumps(seq, ail_manager)

Remove all redundant jumps.

Parameters:
  • seq (SequenceNode) – The SequenceNode instance to handle.

  • ail_manager (Manager) – The AIL manager to create new atoms if needed.

Returns:

A processed SequenceNode.

replace_nodes(graph, old_node_0, new_node, old_node_1=None, self_loop=True)
static replace_node_in_node(parent_node, old_node, new_node)
Return type:

None

Parameters:
static is_a_jump_target(stmt, addr)
Return type:

bool

Parameters:
static has_nonlabel_nonphi_statements(node)
Return type:

bool

Parameters:

node (BaseNode)