angr.analyses.loop_analysis.loop_analysis

class angr.analyses.loop_analysis.loop_analysis.ASTNodeBase

Bases: object

The base node for AST nodes used in loop analysis.

class angr.analyses.loop_analysis.loop_analysis.VarNode

Bases: ASTNodeBase

Represents a variable node in the AST; corresponds to a virtual variable in AIL.

__init__(var_ident)
Parameters:

var_ident (str)

class angr.analyses.loop_analysis.loop_analysis.ConstNode

Bases: ASTNodeBase

Represents a constant value.

__init__(value)
Parameters:

value (int)

class angr.analyses.loop_analysis.loop_analysis.BinOpNode

Bases: ASTNodeBase

Represents a binary operation between a variable and a constant.

__init__(op, lhs, rhs)
Parameters:
class angr.analyses.loop_analysis.loop_analysis.AssignmentNode

Bases: ASTNodeBase

Represents an assignment operation in the AST.

__init__(lhs, rhs)
Parameters:
class angr.analyses.loop_analysis.loop_analysis.AssignmentToASTVisitor

Bases: CStructuredCodeWalker

A visitor that converts AIL assignments into AST nodes.

handle_CAssignment(obj)
Return type:

AssignmentNode | None

Parameters:

obj (CAssignment)

handle_CVariable(obj)
Return type:

VarNode | None

Parameters:

obj (CVariable)

handle_CBinaryOp(obj)
Return type:

BinOpNode | None

Parameters:

obj (CBinaryOp)

handle_CConstant(obj)
Return type:

ConstNode | None

Parameters:

obj (CConstant)

class angr.analyses.loop_analysis.loop_analysis.LoopBodyControlStatementCollector

Bases: CStructuredCodeWalker

A visitor that determines if there are control statements (break, continue, goto) within a loop body.

__init__()
handle_CBreak(obj)
Parameters:

obj (CBreak)

handle_CContinue(obj)
handle_CGoto(obj)
handle_CSwitchCase(obj)
handle_CForLoop(obj)
handle_CDoWhileLoop(obj)
handle_CWhileLoop(obj)
class angr.analyses.loop_analysis.loop_analysis.LoopBodyAssignmentCollector

Bases: CStructuredCodeWalker

A visitor that collects assignments to specific variables within a loop body.

__init__(var_idents)
Parameters:

var_idents (set[str])

handle_CAssignment(obj)
Parameters:

obj (CAssignment)

handle_CIfElse(obj)
handle_CSwitchCase(obj)
handle_CForLoop(obj)
handle_CDoWhileLoop(obj)
handle_CWhileLoop(obj)
class angr.analyses.loop_analysis.loop_analysis.LoopVisitor

Bases: CStructuredCodeWalker

A visitor that analyzes loop structures in CStructuredCode and collects relevant information for loops.

__init__()
handle_CIfElse(obj)
handle_CStatements(obj)
Parameters:

obj (CStatements)

handle_CAssignment(obj)
Parameters:

obj (CAssignment)

handle_CWhileLoop(obj)
Parameters:

obj (CWhileLoop)

handle_CDoWhileLoop(obj)
Parameters:

obj (CDoWhileLoop)

handle_CForLoop(obj)
Parameters:

obj (CForLoop)

class angr.analyses.loop_analysis.loop_analysis.LoopAnalysis

Bases: Analysis

Analyze loop nodes in a structured C code representation and extract relevant information about the loop, including - Loop block addresses - Loop exits - Loop type - Loop condition - Max iterations - Fixed iterations

__init__(cfunc)
Parameters:

cfunc (CFunction)