angr.exploration_techniques.timeout 源代码

from __future__ import annotations

import logging
import time

from .base import ExplorationTechnique

l = logging.getLogger(name=__name__)


[文档] class Timeout(ExplorationTechnique): """ Timeout exploration technique that stops an active exploration if the run time exceeds a predefined timeout """
[文档] def __init__(self, timeout=None): super().__init__() self.start_time = None self.timeout = timeout
[文档] def setup(self, simgr): simgr.stashes["timeout"] = []
[文档] def step(self, simgr, stash="active", **kwargs): if self.start_time is None: self.start_time = time.time() if self.timeout is not None and time.time() - self.start_time > self.timeout: self.start_time = None simgr.move(stash, "timeout") l.warning("exploration timeout in %s seconds!", self.timeout) else: simgr = simgr.step(stash=stash, **kwargs) return simgr