angr.storage.memory_mixins.size_resolution_mixin

class angr.storage.memory_mixins.size_resolution_mixin.SizeNormalizationMixin

Bases: MemoryMixin

Provides basic services related to normalizing sizes. After this mixin, sizes will always be a plain int. Assumes that the data is a BV.

  • load will throw a TypeError if no size is provided

  • store will default to len(data)//byte_width if no size is provided

load(addr, size=None, **kwargs)
store(addr, data, size=None, **kwargs)
class angr.storage.memory_mixins.size_resolution_mixin.SizeConcretizationMixin

Bases: MemoryMixin

This mixin allows memory to process symbolic sizes. It will not touch any sizes which are not ASTs with non-BVV ops. Assumes that the data is a BV.

  • symbolic load sizes will be concretized as their maximum and a warning will be logged

  • symbolic store sizes will be dispatched as several conditional stores with concrete sizes

__init__(concretize_symbolic_write_size=False, max_concretize_count=256, max_symbolic_size=4194304, raise_memory_limit_error=False, size_limit=257, **kwargs)
Parameters:
  • concretize_symbolic_write_size (bool)

  • max_concretize_count (int | None)

  • max_symbolic_size (int)

  • raise_memory_limit_error (bool)

  • size_limit (int)

load(addr, size=None, **kwargs)
store(addr, data, size=None, *, condition=None, **kwargs)