angr.analyses.stack_pointer_tracker

class angr.analyses.stack_pointer_tracker.BottomType

Bases: object

The bottom value for register values.

class angr.analyses.stack_pointer_tracker.Constant

Bases: object

Represents a constant value.

__init__(val)
val
class angr.analyses.stack_pointer_tracker.Register

Bases: object

Represent a register.

__init__(offset, bitlen)
offset
bitlen
class angr.analyses.stack_pointer_tracker.OffsetVal

Bases: object

Represent a value with an offset added.

__init__(reg, offset)
property reg
property offset
class angr.analyses.stack_pointer_tracker.Eq

Bases: object

Represent an equivalence condition.

__init__(val0, val1)
val0
val1
class angr.analyses.stack_pointer_tracker.FrozenStackPointerTrackerState

Bases: object

Abstract state for StackPointerTracker analysis with registers and memory values being in frozensets.

__init__(regs, memory, is_tracking_memory, resilient)
regs
memory
is_tracking_memory
resilient
unfreeze()
merge(other, addr, reg_merge_cache, mem_merge_cache)
Parameters:
class angr.analyses.stack_pointer_tracker.StackPointerTrackerState

Bases: object

Abstract state for StackPointerTracker analysis.

__init__(regs, memory, is_tracking_memory, resilient)
Parameters:

resilient (bool)

regs
memory
is_tracking_memory
resilient
give_up_on_memory_tracking()
store(addr, val)
pop_dirty()
load(addr)
get(reg)
put(reg, val, force=False)
Parameters:

force (bool)

copy()
freeze()
merge(other, addr, reg_merge_cache, mem_merge_cache)
Parameters:
exception angr.analyses.stack_pointer_tracker.CouldNotResolveException

Bases: Exception

An exception used in StackPointerTracker analysis to represent internal resolving failures.

class angr.analyses.stack_pointer_tracker.StackPointerTracker

Bases: Analysis, ForwardAnalysis

Track the offset of stack pointer at the end of each basic block of a function.

__init__(func, reg_offsets, block=None, track_memory=True, cross_insn_opt=True, initial_reg_values=None, resilient=True, cross_insn_opt_callback=None, flavor=None)
Parameters:
  • flavor (str | None) – The decompilation flavor whose callee and call-site prototypes are consulted (None: the default flavor).

  • func (Function | None)

  • reg_offsets (set[int])

  • block (Block | None)

  • resilient (bool)

  • cross_insn_opt_callback (Callable[[int, int], bool] | None)

reg_values: dict[int, dict[int, Any]]
mem_values: dict[int, dict[int, Any]]
reg_deltas: dict[int, dict[int, dict[int, Any]]]
mem_deltas: dict[int, dict[int, dict[int, Any]]]
offset_after(addr, reg)
offset_before(addr, reg)
offset_after_block(block_addr, reg)
offset_before_block(block_addr, reg)
constant_after(addr, reg)
constant_before(addr, reg)
constant_after_block(block_addr, reg)
constant_before_block(block_addr, reg)
property inconsistent
inconsistent_for(reg)
offsets_for(reg)
callee_cleanup_size_at(node)

The number of bytes this analysis assumes the callee pops at the call site ending node.

Return type:

int