| from abc import ABCMeta, abstractmethod |
| |
| import lldb |
| |
| |
| class ScriptedHook(metaclass=ABCMeta): |
| """ |
| The base class for a scripted target hook. |
| |
| A single `ScriptedHook` subclass backs both `target hook add -P` and |
| `target stop-hook add -P`. `handle_stop` is required so a hook can |
| always be attached as a stop-hook; `handle_module_loaded` and |
| `handle_module_unloaded` are optional and only called for hooks |
| registered via `target hook add -P`. |
| """ |
| |
| target: lldb.SBTarget |
| args: lldb.SBStructuredData |
| |
| @abstractmethod |
| def __init__(self, target: lldb.SBTarget, args: lldb.SBStructuredData): |
| """Construct a scripted hook. |
| |
| Args: |
| target (lldb.SBTarget): The target owning this hook. |
| args (lldb.SBStructuredData): A Dictionary holding arbitrary |
| key/value pairs used by the scripted hook. |
| """ |
| self.target = target |
| self.args = args |
| |
| def handle_module_loaded(self, stream: lldb.SBStream) -> None: |
| """Called whenever a module is loaded into the target. |
| |
| Args: |
| stream (lldb.SBStream): The stream to which the hook can write |
| output that will be reported to the user. |
| """ |
| pass |
| |
| def handle_module_unloaded(self, stream: lldb.SBStream) -> None: |
| """Called whenever a module is unloaded from the target. |
| |
| Args: |
| stream (lldb.SBStream): The stream to which the hook can write |
| output that will be reported to the user. |
| """ |
| pass |
| |
| @abstractmethod |
| def handle_stop( |
| self, exe_ctx: lldb.SBExecutionContext, stream: lldb.SBStream |
| ) -> bool: |
| """Called whenever the process stops, before control is returned to |
| the user. |
| |
| Args: |
| exe_ctx (lldb.SBExecutionContext): The execution context at the |
| point of the stop. |
| stream (lldb.SBStream): The stream to which the hook can write |
| output that will be reported to the user. |
| |
| Returns: |
| bool: `True` if the process should stop and control should be |
| returned to the user, `False` if the process should keep running. |
| """ |
| pass |