angr.state_plugins.globals 源代码

from __future__ import annotations
import logging

from angr.sim_state import SimState
from .plugin import SimStatePlugin

l = logging.getLogger(name=__name__)


[文档] class SimStateGlobals(SimStatePlugin):
[文档] def __init__(self, backer=None): super().__init__() self._backer = backer if backer is not None else {}
[文档] def set_state(self, state): pass
[文档] def merge(self, others, merge_conditions, common_ancestor=None): # pylint: disable=unused-argument for other in others: for k in other: if k not in self: self[k] = other[k] return True
[文档] def widen(self, others): # pylint: disable=unused-argument l.warning("Widening is unimplemented for globals") return False
def __iter__(self): return iter(self._backer) def __getitem__(self, k): return self._backer[k] def __setitem__(self, k, v): self._backer[k] = v def __delitem__(self, k): del self._backer[k] def __contains__(self, k): return k in self._backer
[文档] def keys(self): return self._backer.keys()
[文档] def values(self): return self._backer.values()
[文档] def items(self): return self._backer.items()
[文档] def get(self, k, alt=None): return self._backer.get(k, alt)
[文档] def pop(self, k, alt=None): return self._backer.pop(k, alt)
@SimStatePlugin.memo def copy(self, memo): # pylint: disable=unused-argument return SimStateGlobals(dict(self._backer))
SimState.register_default("globals", SimStateGlobals)