Skip to content

Commit 2b3d556

Browse files
Autorefresh Dev Documentation
1 parent 2ae2cdd commit 2b3d556

File tree

8 files changed

+56
-12
lines changed

8 files changed

+56
-12
lines changed

dev/_modules/libdebug/ptrace/ptrace_interface.html

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -439,8 +439,8 @@ <h1>Source code for libdebug.ptrace.ptrace_interface</h1><div class="highlight">
439439
<span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
440440
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">TYPE_CHECKING</span>
441441

442-
<span class="kn">from</span> <span class="nn">libdebug.architectures.register_helper</span> <span class="kn">import</span> <span class="n">register_holder_provider</span>
443442
<span class="kn">from</span> <span class="nn">libdebug.architectures.call_utilities_provider</span> <span class="kn">import</span> <span class="n">call_utilities_provider</span>
443+
<span class="kn">from</span> <span class="nn">libdebug.architectures.register_helper</span> <span class="kn">import</span> <span class="n">register_holder_provider</span>
444444
<span class="kn">from</span> <span class="nn">libdebug.cffi</span> <span class="kn">import</span> <span class="n">_ptrace_cffi</span>
445445
<span class="kn">from</span> <span class="nn">libdebug.data.breakpoint</span> <span class="kn">import</span> <span class="n">Breakpoint</span>
446446
<span class="kn">from</span> <span class="nn">libdebug.debugger.internal_debugger_instance_manager</span> <span class="kn">import</span> <span class="p">(</span>
@@ -457,6 +457,7 @@ <h1>Source code for libdebug.ptrace.ptrace_interface</h1><div class="highlight">
457457
<span class="kn">from</span> <span class="nn">libdebug.utils.process_utils</span> <span class="kn">import</span> <span class="p">(</span>
458458
<span class="n">disable_self_aslr</span><span class="p">,</span>
459459
<span class="n">get_process_maps</span><span class="p">,</span>
460+
<span class="n">get_process_tasks</span><span class="p">,</span>
460461
<span class="n">invalidate_process_cache</span><span class="p">,</span>
461462
<span class="p">)</span>
462463

@@ -612,20 +613,27 @@ <h1>Source code for libdebug.ptrace.ptrace_interface</h1><div class="highlight">
612613
<span class="k">with</span> <span class="n">extend_internal_debugger</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
613614
<span class="bp">self</span><span class="o">.</span><span class="n">status_handler</span> <span class="o">=</span> <span class="n">PtraceStatusHandler</span><span class="p">()</span>
614615

615-
<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">pid</span><span class="p">)</span>
616-
<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>
617-
<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>
618-
<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>
616+
<span class="c1"># Attach to all the tasks of the process</span>
617+
<span class="bp">self</span><span class="o">.</span><span class="n">_attach_to_all_tasks</span><span class="p">(</span><span class="n">pid</span><span class="p">)</span>
619618

620619
<span class="bp">self</span><span class="o">.</span><span class="n">process_id</span> <span class="o">=</span> <span class="n">pid</span>
621620
<span class="bp">self</span><span class="o">.</span><span class="n">detached</span> <span class="o">=</span> <span class="kc">False</span>
622621
<span class="bp">self</span><span class="o">.</span><span class="n">_internal_debugger</span><span class="o">.</span><span class="n">process_id</span> <span class="o">=</span> <span class="n">pid</span>
623-
<span class="bp">self</span><span class="o">.</span><span class="n">register_new_thread</span><span class="p">(</span><span class="n">pid</span><span class="p">)</span>
624622
<span class="c1"># If we are attaching to a process, we don&#39;t want to continue to the entry point</span>
625623
<span class="c1"># which we have probably already passed</span>
626624
<span class="bp">self</span><span class="o">.</span><span class="n">_setup_parent</span><span class="p">(</span><span class="kc">False</span><span class="p">)</span></div>
627625

628626

627+
<span class="k">def</span> <span class="nf">_attach_to_all_tasks</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">PtraceStatusHandler</span><span class="p">,</span> <span class="n">pid</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
628+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Attach to all the tasks of the process.&quot;&quot;&quot;</span>
629+
<span class="n">tids</span> <span class="o">=</span> <span class="n">get_process_tasks</span><span class="p">(</span><span class="n">pid</span><span class="p">)</span>
630+
<span class="k">for</span> <span class="n">tid</span> <span class="ow">in</span> <span class="n">tids</span><span class="p">:</span>
631+
<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>
632+
<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>
633+
<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>
634+
<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>
635+
<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>
636+
629637
<div class="viewcode-block" id="PtraceInterface.detach">
630638
<a class="viewcode-back" href="../../../libdebug.ptrace.html#libdebug.ptrace.ptrace_interface.PtraceInterface.detach">[docs]</a>
631639
<span class="k">def</span> <span class="nf">detach</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">PtraceInterface</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>

dev/_modules/libdebug/ptrace/ptrace_status_handler.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,6 @@ <h1>Source code for libdebug.ptrace.ptrace_status_handler</h1><div class="highli
434434

435435
<span class="kn">import</span> <span class="nn">os</span>
436436
<span class="kn">import</span> <span class="nn">signal</span>
437-
<span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
438437
<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">TYPE_CHECKING</span>
439438

440439
<span class="kn">from</span> <span class="nn">libdebug.architectures.ptrace_software_breakpoint_patcher</span> <span class="kn">import</span> <span class="p">(</span>
@@ -444,6 +443,7 @@ <h1>Source code for libdebug.ptrace.ptrace_status_handler</h1><div class="highli
444443
<span class="kn">from</span> <span class="nn">libdebug.liblog</span> <span class="kn">import</span> <span class="n">liblog</span>
445444
<span class="kn">from</span> <span class="nn">libdebug.ptrace.ptrace_constants</span> <span class="kn">import</span> <span class="n">SYSCALL_SIGTRAP</span><span class="p">,</span> <span class="n">StopEvents</span>
446445
<span class="kn">from</span> <span class="nn">libdebug.state.resume_context</span> <span class="kn">import</span> <span class="n">EventType</span>
446+
<span class="kn">from</span> <span class="nn">libdebug.utils.process_utils</span> <span class="kn">import</span> <span class="n">get_process_tasks</span>
447447
<span class="kn">from</span> <span class="nn">libdebug.utils.signal_utils</span> <span class="kn">import</span> <span class="n">resolve_signal_name</span>
448448

449449
<span class="k">if</span> <span class="n">TYPE_CHECKING</span><span class="p">:</span>
@@ -884,10 +884,7 @@ <h1>Source code for libdebug.ptrace.ptrace_status_handler</h1><div class="highli
884884
<a class="viewcode-back" href="../../../libdebug.ptrace.html#libdebug.ptrace.ptrace_status_handler.PtraceStatusHandler.check_for_new_threads">[docs]</a>
885885
<span class="k">def</span> <span class="nf">check_for_new_threads</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">PtraceStatusHandler</span><span class="p">,</span> <span class="n">pid</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
886886
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Check for new threads in the process and register them.&quot;&quot;&quot;</span>
887-
<span class="k">if</span> <span class="ow">not</span> <span class="n">Path</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;/proc/</span><span class="si">{</span><span class="n">pid</span><span class="si">}</span><span class="s2">/task&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
888-
<span class="k">return</span>
889-
890-
<span class="n">tids</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;/proc/</span><span class="si">{</span><span class="n">pid</span><span class="si">}</span><span class="s2">/task&quot;</span><span class="p">)]</span>
887+
<span class="n">tids</span> <span class="o">=</span> <span class="n">get_process_tasks</span><span class="p">(</span><span class="n">pid</span><span class="p">)</span>
891888
<span class="k">for</span> <span class="n">tid</span> <span class="ow">in</span> <span class="n">tids</span><span class="p">:</span>
892889
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="o">.</span><span class="n">get_thread_by_id</span><span class="p">(</span><span class="n">tid</span><span class="p">):</span>
893890
<span class="bp">self</span><span class="o">.</span><span class="n">ptrace_interface</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> <span class="bp">self</span><span class="o">.</span><span class="n">internal_debugger</span><span class="p">)</span>

dev/_modules/libdebug/utils/process_utils.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,24 @@ <h1>Source code for libdebug.utils.process_utils</h1><div class="highlight"><pre
473473

474474

475475

476+
<div class="viewcode-block" id="get_process_tasks">
477+
<a class="viewcode-back" href="../../../libdebug.utils.html#libdebug.utils.process_utils.get_process_tasks">[docs]</a>
478+
<span class="k">def</span> <span class="nf">get_process_tasks</span><span class="p">(</span><span class="n">process_id</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
479+
<span class="w"> </span><span class="sd">&quot;&quot;&quot;Returns the tasks of the specified process.</span>
480+
481+
<span class="sd"> Args:</span>
482+
<span class="sd"> process_id (int): The PID of the process whose tasks should be returned.</span>
483+
484+
<span class="sd"> Returns:</span>
485+
<span class="sd"> list: A list of integers, each representing a task of the specified process.</span>
486+
<span class="sd"> &quot;&quot;&quot;</span>
487+
<span class="n">tids</span> <span class="o">=</span> <span class="p">[]</span>
488+
<span class="k">if</span> <span class="n">Path</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;/proc/</span><span class="si">{</span><span class="n">process_id</span><span class="si">}</span><span class="s2">/task&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">exists</span><span class="p">():</span>
489+
<span class="n">tids</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">task</span><span class="p">)</span> <span class="k">for</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;/proc/</span><span class="si">{</span><span class="n">process_id</span><span class="si">}</span><span class="s2">/task&quot;</span><span class="p">)]</span>
490+
<span class="k">return</span> <span class="n">tids</span></div>
491+
492+
493+
476494
<div class="viewcode-block" id="invalidate_process_cache">
477495
<a class="viewcode-back" href="../../../libdebug.utils.html#libdebug.utils.process_utils.invalidate_process_cache">[docs]</a>
478496
<span class="k">def</span> <span class="nf">invalidate_process_cache</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>

dev/genindex.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,8 @@ <h2 id="G">G</h2>
812812
<li><a href="libdebug.utils.html#libdebug.utils.platform_utils.get_platform_register_size">get_platform_register_size() (in module libdebug.utils.platform_utils)</a>
813813
</li>
814814
<li><a href="libdebug.utils.html#libdebug.utils.process_utils.get_process_maps">get_process_maps() (in module libdebug.utils.process_utils)</a>
815+
</li>
816+
<li><a href="libdebug.utils.html#libdebug.utils.process_utils.get_process_tasks">get_process_tasks() (in module libdebug.utils.process_utils)</a>
815817
</li>
816818
<li><a href="libdebug.utils.html#libdebug.utils.syscall_utils.get_remote_definition_url">get_remote_definition_url() (in module libdebug.utils.syscall_utils)</a>
817819
</li>

dev/libdebug.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1149,6 +1149,7 @@ <h2>Subpackages<a class="headerlink" href="#subpackages" title="Link to this hea
11491149
<li class="toctree-l2"><a class="reference internal" href="libdebug.utils.html#module-libdebug.utils.process_utils">libdebug.utils.process_utils module</a><ul>
11501150
<li class="toctree-l3"><a class="reference internal" href="libdebug.utils.html#libdebug.utils.process_utils.get_process_maps"><code class="docutils literal notranslate"><span class="pre">get_process_maps()</span></code></a></li>
11511151
<li class="toctree-l3"><a class="reference internal" href="libdebug.utils.html#libdebug.utils.process_utils.get_open_fds"><code class="docutils literal notranslate"><span class="pre">get_open_fds()</span></code></a></li>
1152+
<li class="toctree-l3"><a class="reference internal" href="libdebug.utils.html#libdebug.utils.process_utils.get_process_tasks"><code class="docutils literal notranslate"><span class="pre">get_process_tasks()</span></code></a></li>
11521153
<li class="toctree-l3"><a class="reference internal" href="libdebug.utils.html#libdebug.utils.process_utils.invalidate_process_cache"><code class="docutils literal notranslate"><span class="pre">invalidate_process_cache()</span></code></a></li>
11531154
<li class="toctree-l3"><a class="reference internal" href="libdebug.utils.html#libdebug.utils.process_utils.disable_self_aslr"><code class="docutils literal notranslate"><span class="pre">disable_self_aslr()</span></code></a></li>
11541155
</ul>

dev/libdebug.utils.html

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,23 @@ <h2>libdebug.utils.gdb module<a class="headerlink" href="#libdebug-utils-gdb-mod
11631163
</dl>
11641164
</dd></dl>
11651165

1166+
<dl class="py function">
1167+
<dt class="sig sig-object py" id="libdebug.utils.process_utils.get_process_tasks">
1168+
<span class="sig-prename descclassname"><span class="pre">libdebug.utils.process_utils.</span></span><span class="sig-name descname"><span class="pre">get_process_tasks</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">process_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">int</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">list</span><span class="p"><span class="pre">[</span></span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="_modules/libdebug/utils/process_utils.html#get_process_tasks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#libdebug.utils.process_utils.get_process_tasks" title="Link to this definition">#</a></dt>
1169+
<dd><p>Returns the tasks of the specified process.</p>
1170+
<dl class="field-list simple">
1171+
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
1172+
<dd class="field-odd"><p><strong>process_id</strong> (<em>int</em>) – The PID of the process whose tasks should be returned.</p>
1173+
</dd>
1174+
<dt class="field-even">Returns<span class="colon">:</span></dt>
1175+
<dd class="field-even"><p>A list of integers, each representing a task of the specified process.</p>
1176+
</dd>
1177+
<dt class="field-odd">Return type<span class="colon">:</span></dt>
1178+
<dd class="field-odd"><p>list</p>
1179+
</dd>
1180+
</dl>
1181+
</dd></dl>
1182+
11661183
<dl class="py function">
11671184
<dt class="sig sig-object py" id="libdebug.utils.process_utils.invalidate_process_cache">
11681185
<span class="sig-prename descclassname"><span class="pre">libdebug.utils.process_utils.</span></span><span class="sig-name descname"><span class="pre">invalidate_process_cache</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/libdebug/utils/process_utils.html#invalidate_process_cache"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#libdebug.utils.process_utils.invalidate_process_cache" title="Link to this definition">#</a></dt>
@@ -1409,6 +1426,7 @@ <h2>libdebug.utils.gdb module<a class="headerlink" href="#libdebug-utils-gdb-mod
14091426
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#module-libdebug.utils.process_utils">libdebug.utils.process_utils module</a><ul class="nav section-nav flex-column">
14101427
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#libdebug.utils.process_utils.get_process_maps"><code class="docutils literal notranslate"><span class="pre">get_process_maps()</span></code></a></li>
14111428
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#libdebug.utils.process_utils.get_open_fds"><code class="docutils literal notranslate"><span class="pre">get_open_fds()</span></code></a></li>
1429+
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#libdebug.utils.process_utils.get_process_tasks"><code class="docutils literal notranslate"><span class="pre">get_process_tasks()</span></code></a></li>
14121430
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#libdebug.utils.process_utils.invalidate_process_cache"><code class="docutils literal notranslate"><span class="pre">invalidate_process_cache()</span></code></a></li>
14131431
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#libdebug.utils.process_utils.disable_self_aslr"><code class="docutils literal notranslate"><span class="pre">disable_self_aslr()</span></code></a></li>
14141432
</ul>

dev/objects.inv

5 Bytes
Binary file not shown.

dev/searchindex.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)