Source code for libdebug.libdebug

#
# Copyright (c) 2023-2024 Roberto Alessandro Bertolini, Gabriele Digregorio, Francesco Panebianco. All rights reserved.
# Licensed under the MIT license. See LICENSE file in the project root for details.
#

from __future__ import annotations

from libdebug.debugger.debugger import Debugger
from libdebug.debugger.internal_debugger import InternalDebugger


[docs] def debugger( argv: str | list[str] = [], enable_aslr: bool = False, env: dict[str, str] | None = None, escape_antidebug: bool = False, continue_to_binary_entrypoint: bool = True, auto_interrupt_on_command: bool = False, ) -> Debugger: """This function is used to create a new `Debugger` object. It returns a `Debugger` object. Args: argv (str | list[str], optional): The location of the binary to debug, and any additional arguments to pass to it. enable_aslr (bool, optional): Whether to enable ASLR. Defaults to False. env (dict[str, str], optional): The environment variables to use. Defaults to the same environment of the debugging script. escape_antidebug (bool): Whether to automatically attempt to patch antidebugger detectors based on the ptrace syscall. continue_to_binary_entrypoint (bool, optional): Whether to automatically continue to the binary entrypoint. Defaults to True. auto_interrupt_on_command (bool, optional): Whether to automatically interrupt the process when a command is issued. Defaults to False. Returns: Debugger: The `Debugger` object. """ if isinstance(argv, str): argv = [argv] internal_debugger = InternalDebugger() internal_debugger.argv = argv internal_debugger.env = env internal_debugger.aslr_enabled = enable_aslr internal_debugger.autoreach_entrypoint = continue_to_binary_entrypoint internal_debugger.auto_interrupt_on_command = auto_interrupt_on_command internal_debugger.escape_antidebug = escape_antidebug debugger = Debugger() debugger.post_init_(internal_debugger) return debugger