Skip to content

Commit 39aace8

Browse files
Autorefresh Dev Documentation
1 parent 02dd661 commit 39aace8

17 files changed

+259
-119
lines changed

dev/_modules/libdebug/data/syscall_handler.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,13 @@ <h1>Source code for libdebug.data.syscall_handler</h1><div class="highlight"><pr
495495
<span class="bp">self</span><span class="o">.</span><span class="n">_has_entered</span> <span class="o">=</span> <span class="kc">False</span></div>
496496

497497

498+
<div class="viewcode-block" id="SyscallHandler.hit_on">
499+
<a class="viewcode-back" href="../../../libdebug.data.html#libdebug.data.syscall_handler.SyscallHandler.hit_on">[docs]</a>
500+
<span class="k">def</span> <span class="nf">hit_on</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">SyscallHandler</span><span class="p">,</span> <span class="n">thread_context</span><span class="p">:</span> <span class="n">ThreadContext</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
501+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Returns whether the syscall handler has been hit on the given thread context.&quot;&quot;&quot;</span>
502+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">enabled</span> <span class="ow">and</span> <span class="n">thread_context</span><span class="o">.</span><span class="n">syscall_number</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">syscall_number</span></div>
503+
504+
498505
<div class="viewcode-block" id="SyscallHandler.hit_on_enter">
499506
<a class="viewcode-back" href="../../../libdebug.data.html#libdebug.data.syscall_handler.SyscallHandler.hit_on_enter">[docs]</a>
500507
<span class="k">def</span> <span class="nf">hit_on_enter</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">SyscallHandler</span><span class="p">,</span> <span class="n">thread_context</span><span class="p">:</span> <span class="n">ThreadContext</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>

dev/_modules/libdebug/debugger/debugger.html

Lines changed: 28 additions & 25 deletions
Large diffs are not rendered by default.

dev/_modules/libdebug/debugger/internal_debugger.html

Lines changed: 51 additions & 18 deletions
Large diffs are not rendered by default.

dev/_modules/libdebug/libdebug.html

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ <h1>Source code for libdebug.libdebug</h1><div class="highlight"><pre>
440440
<a class="viewcode-back" href="../../libdebug.html#libdebug.libdebug.debugger">[docs]</a>
441441
<span class="k">def</span> <span class="nf">debugger</span><span class="p">(</span>
442442
<span class="n">argv</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[],</span>
443-
<span class="n">aslr</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
443+
<span class="n">aslr</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
444444
<span class="n">env</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
445445
<span class="n">escape_antidebug</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
446446
<span class="n">continue_to_binary_entrypoint</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
@@ -451,12 +451,16 @@ <h1>Source code for libdebug.libdebug</h1><div class="highlight"><pre>
451451
<span class="w"> </span><span class="sd">&quot;&quot;&quot;This function is used to create a new `Debugger` object. It returns a `Debugger` object.</span>
452452

453453
<span class="sd"> Args:</span>
454-
<span class="sd"> argv (str | list[str], optional): The location of the binary to debug, and any additional arguments to pass to it.</span>
455-
<span class="sd"> aslr (bool, optional): Whether to enable ASLR. Defaults to False.</span>
456-
<span class="sd"> env (dict[str, str], optional): The environment variables to use. Defaults to the same environment of the debugging script.</span>
457-
<span class="sd"> escape_antidebug (bool): Whether to automatically attempt to patch antidebugger detectors based on the ptrace syscall.</span>
458-
<span class="sd"> continue_to_binary_entrypoint (bool, optional): Whether to automatically continue to the binary entrypoint. Defaults to True.</span>
459-
<span class="sd"> auto_interrupt_on_command (bool, optional): Whether to automatically interrupt the process when a command is issued. Defaults to False.</span>
454+
<span class="sd"> argv (str | list[str], optional): The location of the binary to debug and any arguments to pass to it.</span>
455+
<span class="sd"> aslr (bool, optional): Whether to enable ASLR. Defaults to True.</span>
456+
<span class="sd"> env (dict[str, str], optional): The environment variables to use. Defaults to the same environment of the</span>
457+
<span class="sd"> debugging script.</span>
458+
<span class="sd"> escape_antidebug (bool): Whether to automatically attempt to patch antidebugger detectors based on the ptrace</span>
459+
<span class="sd"> syscall.</span>
460+
<span class="sd"> continue_to_binary_entrypoint (bool, optional): Whether to automatically continue to the binary entrypoint.</span>
461+
<span class="sd"> Defaults to True.</span>
462+
<span class="sd"> auto_interrupt_on_command (bool, optional): Whether to automatically interrupt the process when a command is</span>
463+
<span class="sd"> issued. Defaults to False.</span>
460464
<span class="sd"> fast_memory (bool, optional): Whether to use a faster memory reading method. Defaults to False.</span>
461465
<span class="sd"> kill_on_exit (bool, optional): Whether to kill the debugged process when the debugger exits. Defaults to True.</span>
462466

@@ -479,6 +483,8 @@ <h1>Source code for libdebug.libdebug</h1><div class="highlight"><pre>
479483
<span class="n">debugger</span> <span class="o">=</span> <span class="n">Debugger</span><span class="p">()</span>
480484
<span class="n">debugger</span><span class="o">.</span><span class="n">post_init_</span><span class="p">(</span><span class="n">internal_debugger</span><span class="p">)</span>
481485

486+
<span class="n">internal_debugger</span><span class="o">.</span><span class="n">debugger</span> <span class="o">=</span> <span class="n">debugger</span>
487+
482488
<span class="c1"># If we are attaching, we assume the architecture is the same as the current platform</span>
483489
<span class="k">if</span> <span class="n">argv</span><span class="p">:</span>
484490
<span class="n">debugger</span><span class="o">.</span><span class="n">arch</span> <span class="o">=</span> <span class="n">elf_architecture</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>

dev/_modules/libdebug/ptrace/ptrace_interface.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,12 @@ <h1>Source code for libdebug.ptrace.ptrace_interface</h1><div class="highlight">
649649
<span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">lib_trace</span><span class="o">.</span><span class="n">ptrace_attach</span><span class="p">(</span><span class="n">tid</span><span class="p">)</span>
650650
<span class="k">if</span> <span class="n">res</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
651651
<span class="n">errno_val</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ffi</span><span class="o">.</span><span class="n">errno</span>
652+
<span class="k">if</span> <span class="n">errno_val</span> <span class="o">==</span> <span class="n">errno</span><span class="o">.</span><span class="n">EPERM</span><span class="p">:</span>
653+
<span class="k">raise</span> <span class="ne">PermissionError</span><span class="p">(</span>
654+
<span class="n">errno_val</span><span class="p">,</span>
655+
<span class="n">errno</span><span class="o">.</span><span class="n">errorcode</span><span class="p">[</span><span class="n">errno_val</span><span class="p">],</span>
656+
<span class="s2">&quot;You don&#39;t have permission to attach to the process. Did you check the ptrace_scope?&quot;</span><span class="p">,</span>
657+
<span class="p">)</span>
652658
<span class="k">raise</span> <span class="ne">OSError</span><span class="p">(</span><span class="n">errno_val</span><span class="p">,</span> <span class="n">errno</span><span class="o">.</span><span class="n">errorcode</span><span class="p">[</span><span class="n">errno_val</span><span class="p">])</span>
653659
<span class="bp">self</span><span class="o">.</span><span class="n">register_new_thread</span><span class="p">(</span><span class="n">tid</span><span class="p">)</span>
654660

dev/_modules/libdebug/ptrace/ptrace_status_handler.html

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -638,13 +638,16 @@ <h1>Source code for libdebug.ptrace.ptrace_status_handler</h1><div class="highli
638638

639639
<span class="n">syscall_number</span> <span class="o">=</span> <span class="n">thread</span><span class="o">.</span><span class="n">syscall_number</span>
640640

641-
<span class="k">if</span> <span class="n">syscall_number</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">handled_syscalls</span><span class="p">:</span>
641+
<span class="k">if</span> <span class="n">syscall_number</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">handled_syscalls</span><span class="p">:</span>
642+
<span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">handled_syscalls</span><span class="p">[</span><span class="n">syscall_number</span><span class="p">]</span>
643+
<span class="k">elif</span> <span class="o">-</span><span class="mi">1</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">handled_syscalls</span><span class="p">:</span>
644+
<span class="c1"># Handle all syscalls is enabled</span>
645+
<span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">handled_syscalls</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
646+
<span class="k">else</span><span class="p">:</span>
642647
<span class="c1"># This is a syscall we don&#39;t care about</span>
643648
<span class="c1"># Resume the execution</span>
644649
<span class="k">return</span>
645650

646-
<span class="n">handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">handled_syscalls</span><span class="p">[</span><span class="n">syscall_number</span><span class="p">]</span>
647-
648651
<span class="k">if</span> <span class="ow">not</span> <span class="n">handler</span><span class="o">.</span><span class="n">_has_entered</span><span class="p">:</span>
649652
<span class="c1"># The syscall is being entered</span>
650653
<span class="n">liblog</span><span class="o">.</span><span class="n">debugger</span><span class="p">(</span>
@@ -752,6 +755,15 @@ <h1>Source code for libdebug.ptrace.ptrace_status_handler</h1><div class="highli
752755
<span class="k">if</span> <span class="n">signal_number</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">caught_signals</span><span class="p">:</span>
753756
<span class="n">catcher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">caught_signals</span><span class="p">[</span><span class="n">signal_number</span><span class="p">]</span>
754757

758+
<span class="bp">self</span><span class="o">.</span><span class="n">_manage_caught_signal</span><span class="p">(</span><span class="n">catcher</span><span class="p">,</span> <span class="n">thread</span><span class="p">,</span> <span class="n">signal_number</span><span class="p">,</span> <span class="p">{</span><span class="n">signal_number</span><span class="p">})</span>
759+
<span class="k">elif</span> <span class="o">-</span><span class="mi">1</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">caught_signals</span> <span class="ow">and</span> <span class="n">signal_number</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span>
760+
<span class="n">signal</span><span class="o">.</span><span class="n">SIGSTOP</span><span class="p">,</span>
761+
<span class="n">signal</span><span class="o">.</span><span class="n">SIGTRAP</span><span class="p">,</span>
762+
<span class="n">signal</span><span class="o">.</span><span class="n">SIGKILL</span><span class="p">,</span>
763+
<span class="p">):</span>
764+
<span class="c1"># Handle all signals is enabled</span>
765+
<span class="n">catcher</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">caught_signals</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
766+
755767
<span class="bp">self</span><span class="o">.</span><span class="n">_manage_caught_signal</span><span class="p">(</span><span class="n">catcher</span><span class="p">,</span> <span class="n">thread</span><span class="p">,</span> <span class="n">signal_number</span><span class="p">,</span> <span class="p">{</span><span class="n">signal_number</span><span class="p">})</span>
756768

757769
<span class="k">def</span> <span class="nf">_internal_signal_handler</span><span class="p">(</span>

dev/_modules/libdebug/state/thread_context.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,7 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
445445
<span class="k">if</span> <span class="n">TYPE_CHECKING</span><span class="p">:</span>
446446
<span class="kn">from</span> <span class="nn">libdebug.data.register_holder</span> <span class="kn">import</span> <span class="n">RegisterHolder</span>
447447
<span class="kn">from</span> <span class="nn">libdebug.data.registers</span> <span class="kn">import</span> <span class="n">Registers</span>
448+
<span class="kn">from</span> <span class="nn">libdebug.debugger.debugger</span> <span class="kn">import</span> <span class="n">Debugger</span>
448449
<span class="kn">from</span> <span class="nn">libdebug.debugger.internal_debugger</span> <span class="kn">import</span> <span class="n">InternalDebugger</span>
449450
<span class="kn">from</span> <span class="nn">libdebug.memory.abstract_memory_view</span> <span class="kn">import</span> <span class="n">AbstractMemoryView</span>
450451

@@ -522,6 +523,11 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
522523
<span class="bp">self</span><span class="o">.</span><span class="n">_dead</span> <span class="o">=</span> <span class="kc">True</span></div>
523524

524525

526+
<span class="nd">@property</span>
527+
<span class="k">def</span> <span class="nf">debugger</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">ThreadContext</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Debugger</span><span class="p">:</span>
528+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;The debugging context this thread belongs to.&quot;&quot;&quot;</span>
529+
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_internal_debugger</span><span class="o">.</span><span class="n">debugger</span>
530+
525531
<span class="nd">@property</span>
526532
<span class="k">def</span> <span class="nf">dead</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">ThreadContext</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
527533
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Whether the thread is dead.&quot;&quot;&quot;</span>

dev/_modules/libdebug/utils/libcontext.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ <h1>Source code for libdebug.utils.libcontext</h1><div class="highlight"><pre>
470470
<span class="bp">self</span><span class="o">.</span><span class="n">_pipe_logger_levels</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;DEBUG&quot;</span><span class="p">,</span> <span class="s2">&quot;SILENT&quot;</span><span class="p">]</span>
471471
<span class="bp">self</span><span class="o">.</span><span class="n">_debugger_logger_levels</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;DEBUG&quot;</span><span class="p">,</span> <span class="s2">&quot;SILENT&quot;</span><span class="p">]</span>
472472
<span class="bp">self</span><span class="o">.</span><span class="n">_general_logger_levels</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;DEBUG&quot;</span><span class="p">,</span> <span class="s2">&quot;INFO&quot;</span><span class="p">,</span> <span class="s2">&quot;WARNING&quot;</span><span class="p">,</span> <span class="s2">&quot;SILENT&quot;</span><span class="p">]</span>
473-
<span class="bp">self</span><span class="o">.</span><span class="n">_sym_lvl</span> <span class="o">=</span> <span class="mi">3</span>
473+
<span class="bp">self</span><span class="o">.</span><span class="n">_sym_lvl</span> <span class="o">=</span> <span class="mi">5</span>
474474

475475
<span class="bp">self</span><span class="o">.</span><span class="n">_debugger_logger</span> <span class="o">=</span> <span class="s2">&quot;SILENT&quot;</span>
476476
<span class="bp">self</span><span class="o">.</span><span class="n">_pipe_logger</span> <span class="o">=</span> <span class="s2">&quot;SILENT&quot;</span>

dev/_modules/libdebug/utils/signal_utils.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,9 @@ <h1>Source code for libdebug.utils.signal_utils</h1><div class="highlight"><pre>
471471
<span class="sd"> Returns:</span>
472472
<span class="sd"> int: the signal number.</span>
473473
<span class="sd"> &quot;&quot;&quot;</span>
474+
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">&quot;ALL&quot;</span><span class="p">,</span> <span class="s2">&quot;all&quot;</span><span class="p">,</span> <span class="s2">&quot;*&quot;</span><span class="p">,</span> <span class="s2">&quot;pkm&quot;</span><span class="p">]:</span>
475+
<span class="k">return</span> <span class="o">-</span><span class="mi">1</span>
476+
474477
<span class="n">signal_to_number</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">create_signal_mappings</span><span class="p">()</span>
475478

476479
<span class="k">try</span><span class="p">:</span>
@@ -492,6 +495,9 @@ <h1>Source code for libdebug.utils.signal_utils</h1><div class="highlight"><pre>
492495
<span class="sd"> Returns:</span>
493496
<span class="sd"> str: the signal name.</span>
494497
<span class="sd"> &quot;&quot;&quot;</span>
498+
<span class="k">if</span> <span class="n">number</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
499+
<span class="k">return</span> <span class="s2">&quot;ALL&quot;</span>
500+
495501
<span class="n">_</span><span class="p">,</span> <span class="n">number_to_signal</span> <span class="o">=</span> <span class="n">create_signal_mappings</span><span class="p">()</span>
496502

497503
<span class="k">try</span><span class="p">:</span>

0 commit comments

Comments
 (0)