angr.storage.memory_object

angr.storage.memory_object.obj_bit_size(o)
class angr.storage.memory_object.SimMemoryObject

Bases: object

A SimMemoryObject is a reference to a byte or several bytes in a specific object in memory. It should be used only by the bottom layer of memory.

__init__(obj, base, endness, length=None, byte_width=8)
is_bytes
base
object: BV | FP
length
endness
size()
property variables
property symbolic
property last_addr
concrete_bytes(offset, size)
Return type:

bytes | None

Parameters:
includes(x)
bytes_at(addr, length, allow_concrete=False, endness='Iend_BE')
class angr.storage.memory_object.SimLabeledMemoryObject

Bases: SimMemoryObject

SimLabeledMemoryObject is a SimMemoryObject with a label

__init__(obj, base, endness, length=None, byte_width=8, label=None)
label
angr.storage.memory_object.bv_slice(value, offset, size, rev, bw)

Extremely cute utility to pretend you’ve serialized a value to stored bytes, sliced it a la python slicing, and then deserialized those bytes to an integer again.

Parameters:
  • value (BV) – The bitvector to slice

  • offset (int) – The byte offset from the first stored byte to slice from, or a negative offset from the end.

  • size (int) – The number of bytes to return. If None, return all bytes from the offset to the end. If larger than the number of bytes from the offset to the end, return all bytes from the offset to the end.

  • rev (bool) – Whether the pretend-serialization should be little-endian

  • bw (int) – The byte width

Return type:

BV

Returns:

The new bitvector