Source code for revenge.techniques.native_instruction_counter.counter


import logging

from revenge import common


[docs]class Counter: def __init__(self, thread, script): self._thread = thread self.count = 0 # frida script that is running this self._script = script # Register auto-cleanup on exit self._process._register_cleanup(self.stop)
[docs] def stop(self): """Stop tracing.""" if self._script is not None: self._script[0].exports.unfollow() # Unload at this point causes frida to hang. Same issue as with InstructionTracer # self._script[0].unload() self._process.techniques._active_stalks.pop(self._thread.id) self._script = None
def __repr__(self): return "<Counter " + str(self.count) + " instructions>" @property def _process(self): return self._thread._process @property def count(self): """int: Number of instructions executed.""" return self.__count @count.setter @common.validate_argument_types(count=int) def count(self, count): self.__count = count
LOGGER = logging.getLogger(__name__)