angr.analyses.decompiler.structurer_nodes

exception angr.analyses.decompiler.structurer_nodes.EmptyBlockNotice

Bases: Exception

class angr.analyses.decompiler.structurer_nodes.MultiNode

Bases: object

__init__(nodes, addr=None, idx=None)
Parameters:
nodes: list[Block]
addr
idx
copy()
Return type:

MultiNode

dbg_repr(indent=0)
Return type:

str

class angr.analyses.decompiler.structurer_nodes.BaseNode

Bases: object

static test_empty_node(node)
static test_empty_condition_node(cond_node)
addr: int | None
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.SequenceNode

Bases: BaseNode

__init__(addr, nodes=None)
Parameters:

addr (int | None)

addr: int | None
nodes
add_node(node)
insert_node(pos, node)
remove_node(node)
node_position(node)
copy()
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.CodeNode

Bases: BaseNode

__init__(node, reaching_condition)
node
reaching_condition
property addr
property idx
dbg_repr(indent=0)
copy()
class angr.analyses.decompiler.structurer_nodes.ConditionNode

Bases: BaseNode

__init__(addr, reaching_condition, condition, true_node, false_node=None)
addr: int | None
reaching_condition
condition
true_node
false_node
dbg_repr(indent=0)
node
class angr.analyses.decompiler.structurer_nodes.CascadingConditionNode

Bases: BaseNode

__init__(addr, condition_and_nodes, else_node=None)
Parameters:
addr: int | None
condition_and_nodes
else_node
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.LoopNode

Bases: BaseNode

__init__(sort, condition, sequence_node, addr=None, continue_addr=None, initializer=None, iterator=None)
Parameters:
sort: str
condition: Expression | None
sequence_node: SequenceNode
initializer: Assignment | None
iterator: Assignment | None
copy()
property addr
property continue_addr
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.BreakNode

Bases: BaseNode

__init__(addr, target)
addr: int | None
target
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.ContinueNode

Bases: BaseNode

__init__(addr, target)
addr: int | None
target
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.ConditionalBreakNode

Bases: BreakNode

__init__(addr, condition, target)
condition
dbg_repr(indent=0)
class angr.analyses.decompiler.structurer_nodes.SwitchCaseNode

Bases: BaseNode

__init__(switch_expr, cases, default_node, addr=None)
Parameters:

cases (OrderedDict[int | tuple[int, ...], SequenceNode])

switch_expr
cases: OrderedDict[int | tuple[int, ...], SequenceNode]
default_node
addr: int | None
dbg_repr(indent=0)
Return type:

str

class angr.analyses.decompiler.structurer_nodes.IncompleteSwitchCaseNode

Bases: BaseNode

Describes an incomplete set of switch-case nodes. Usually an intermediate result. Should always be restructured into a SwitchCaseNode by the end of structuring. Only used in Phoenix structurer.

__init__(addr, head, cases)
Parameters:

cases (list)

addr: int | None
head
cases: list
class angr.analyses.decompiler.structurer_nodes.IncompleteSwitchCaseHeadStatement

Bases: Statement

Describes a switch-case head. This is only created by LoweredSwitchSimplifier.

__init__(idx, switch_variable, case_addrs, **kwargs)
switch_variable
case_addrs: list[tuple[Block, int | str, int, int | None, int]]
replace(old_expr, new_expr)
property depth: int
likes(other)
addr
matches(other)