angr.knowledge_plugins.key_definitions.live_definitions¶
- class angr.knowledge_plugins.key_definitions.live_definitions.DerefSize¶
Bases:
EnumAn enum for specialized kinds of dereferences
- NULL_TERMINATE - Dereference until the first byte which could be a literal null. Return a value including the
terminator.
- NULL_TERMINATE = 1¶
- class angr.knowledge_plugins.key_definitions.live_definitions.DefinitionAnnotation¶
Bases:
AnnotationAn annotation that attaches a Definition to an AST.
- __init__(definition)¶
- definition
- property relocatable¶
Returns whether this annotation can be relocated in a simplification.
- Returns:
True if it can be relocated, false otherwise.
- property eliminatable¶
Returns whether this annotation can be eliminated in a simplification.
- Returns:
True if eliminatable, False otherwise
- class angr.knowledge_plugins.key_definitions.live_definitions.LiveDefinitions¶
Bases:
objectA LiveDefinitions instance contains definitions and uses for register, stack, memory, and temporary variables, uncovered during the analysis.
- INITIAL_SP_16BIT = 32512¶
- INITIAL_SP_32BIT = 2147418112¶
- INITIAL_SP_64BIT = 140737488289792¶
- __init__(arch, track_tmps=False, canonical_size=8, registers=None, stack=None, memory=None, heap=None, tmps=None, others=None, register_uses=None, stack_uses=None, heap_uses=None, memory_uses=None, tmp_uses=None, other_uses=None, element_limit=5, merge_into_tops=True)¶
- arch
- track_tmps
- registers: MultiValuedMemory
- stack: MultiValuedMemory
- memory: MultiValuedMemory
- heap: MultiValuedMemory
- tmps: dict[int, set[Definition]]
- others: dict[Atom, MultiValues]
- register_uses
- stack_uses
- heap_uses
- memory_uses
- tmp_uses: dict[int, set[CodeLocation]]
- other_uses
- uses_by_codeloc: dict[CodeLocation, set[Definition]]
- copy(discard_tmpdefs=False)¶
- Return type:
- reset_uses()¶
- static top(bits)¶
Get a TOP value.
- Parameters:
bits (
int) – Width of the TOP value (in bits).- Returns:
The TOP value.
- static is_top(expr)¶
Check if the given expression is a TOP value.
- Parameters:
expr – The given expression.
- Return type:
- Returns:
True if the expression is TOP, False otherwise.
- static get_stack_offset(addr, had_stack_base=False)¶
- static annotate_with_def(symvar, definition)¶
- static extract_defs_from_annotations(annos)¶
- Return type:
- Parameters:
annos (Iterable[Annotation])
- static extract_defs_from_mv(mv)¶
- Return type:
- Parameters:
mv (MultiValues)
- merge(*others)¶
- Return type:
- Parameters:
others (LiveDefinitions)
- compare(other)¶
- Return type:
- Parameters:
other (LiveDefinitions)
- kill_definitions(atom)¶
Overwrite existing definitions w.r.t ‘atom’ with a dummy definition instance. A dummy definition will not be removed during simplification.
- kill_and_add_definition(atom, code_loc, data, dummy=False, tags=None, endness=None, annotated=False)¶
- Return type:
- Parameters:
atom (Atom)
code_loc (CodeLocation)
data (MultiValues)
- add_use(atom, code_loc, expr=None)¶
- Return type:
- Parameters:
atom (Atom)
code_loc (CodeLocation)
expr (Any | None)
- add_use_by_def(definition, code_loc, expr=None)¶
- Return type:
- Parameters:
definition (Definition)
code_loc (CodeLocation)
expr (Any)
- get_definitions(thing)¶
- get_register_definitions(reg_offset, size)¶
- Return type:
- Parameters:
- get_stack_values(stack_offset, size, endness)¶
- Return type:
- Parameters:
- get_stack_definitions(stack_offset, size)¶
- Return type:
- Parameters:
- get_heap_definitions(heap_addr, size)¶
- Return type:
- Parameters:
- get_memory_definitions(addr, size)¶
- Return type:
- Parameters:
- get_values(spec, endness=None)¶
- get_one_value(spec, strip_annotations=False)¶
- get_concrete_value(spec, cast_to=<class 'int'>)¶
- Overloads:
self, spec (A | Definition[A] | Iterable[A] | Iterable[Definition[A]]), cast_to (type[int]) → int | None
self, spec (A | Definition[A] | Iterable[A] | Iterable[Definition[A]]), cast_to (type[bytes]) → bytes | None
- add_register_use(reg_offset, size, code_loc, expr=None)¶
- Return type:
- Parameters:
reg_offset (int)
size (int)
code_loc (CodeLocation)
expr (Any | None)
- add_register_use_by_def(def_, code_loc, expr=None)¶
- Return type:
- Parameters:
def_ (Definition)
code_loc (CodeLocation)
expr (Any | None)
- add_stack_use(atom, code_loc, expr=None)¶
- Return type:
- Parameters:
atom (MemoryLocation)
code_loc (CodeLocation)
expr (Any | None)
- add_stack_use_by_def(def_, code_loc, expr=None)¶
- Return type:
- Parameters:
def_ (Definition)
code_loc (CodeLocation)
expr (Any | None)
- add_heap_use(atom, code_loc, expr=None)¶
- Return type:
- Parameters:
atom (MemoryLocation)
code_loc (CodeLocation)
expr (Any | None)
- add_heap_use_by_def(def_, code_loc, expr=None)¶
- Return type:
- Parameters:
def_ (Definition)
code_loc (CodeLocation)
expr (Any | None)
- add_memory_use(atom, code_loc, expr=None)¶
- Return type:
- Parameters:
atom (MemoryLocation)
code_loc (CodeLocation)
expr (Any | None)
- add_memory_use_by_def(def_, code_loc, expr=None)¶
- Return type:
- Parameters:
def_ (Definition)
code_loc (CodeLocation)
expr (Any | None)
- add_tmp_use(atom, code_loc)¶
- Return type:
- Parameters:
atom (Tmp)
code_loc (CodeLocation)
- add_tmp_use_by_def(def_, code_loc)¶
- Return type:
- Parameters:
def_ (Definition)
code_loc (CodeLocation)
- deref(pointer, size, endness=Endness.BE)¶
- Overloads:
self, pointer (MultiValues[claripy.ast.BV] | Atom | Definition[Atom] | Iterable[Atom] | Iterable[Definition[Atom]]), size (int | DerefSize), endness (archinfo.Endness) → set[MemoryLocation]
self, pointer (int | claripy.ast.BV | HeapAddress | SpOffset), size (int | DerefSize), endness (archinfo.Endness) → MemoryLocation | None
- heap_address(offset)¶
- Return type:
- Parameters:
offset (int | HeapAddress)