Fix sample for FunctionBP

This commit is contained in:
Clement Rouault
2016-08-22 14:05:29 +02:00
parent 59776e40c3
commit 8942efa36c
12 changed files with 51 additions and 26 deletions
+1 -1
View File
@@ -201,7 +201,7 @@
<div class="viewcode-block" id="FunctionBP"><a class="viewcode-back" href="../../../debug.html#windows.debug.FunctionBP">[docs]</a><span class="k">class</span> <span class="nc">FunctionBP</span><span class="p">(</span><span class="n">FunctionCallBP</span><span class="p">,</span> <span class="n">FunctionParamDumpBP</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;A breakpoint that accept a function from :mod:`windows.winproxy` and able to:</span>
<span class="sd">&quot;&quot;&quot;A breakpoint that accepts a function from :mod:`windows.winproxy` and able to:</span>
<span class="sd"> - Extract the arguments of the functions</span>
<span class="sd"> - Break at the return of the function</span>
+6 -5
View File
@@ -131,7 +131,8 @@
<span class="n">winproxy</span><span class="o">.</span><span class="n">DebugActiveProcess</span><span class="p">(</span><span class="n">target</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
<span class="k">return</span> <span class="n">cls</span><span class="p">(</span><span class="n">target</span><span class="p">)</span></div>
<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">target</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<div class="viewcode-block" id="Debugger.detach"><a class="viewcode-back" href="../../../debug.html#windows.debug.Debugger.detach">[docs]</a> <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">target</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Detach from all debugged processes or process ``target``&quot;&quot;&quot;</span>
<span class="k">if</span> <span class="n">target</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="k">for</span> <span class="n">proc</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">processes</span><span class="o">.</span><span class="n">values</span><span class="p">():</span>
<span class="bp">self</span><span class="o">.</span><span class="n">detach</span><span class="p">(</span><span class="n">proc</span><span class="p">)</span>
@@ -162,10 +163,10 @@
<span class="k">if</span> <span class="n">target</span> <span class="ow">is</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_finish_debug_event</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">REMOVE_ME_debug_event</span><span class="p">,</span> <span class="n">DBG_CONTINUE</span><span class="p">)</span>
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">DebugActiveProcessStop</span><span class="p">(</span><span class="n">target</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">DebugActiveProcessStop</span><span class="p">(</span><span class="n">target</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span></div>
<span class="k">def</span> <span class="nf">_killed_in_action</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Return True if current process have been detached by user callback&quot;&quot;&quot;</span>
<span class="sd">&quot;&quot;&quot;Return ``True`` if current process have been detached by user callback&quot;&quot;&quot;</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">processes</span>
@@ -759,7 +760,7 @@
<span class="c1">## Public API</span>
<div class="viewcode-block" id="Debugger.loop"><a class="viewcode-back" href="../../../debug.html#windows.debug.Debugger.loop">[docs]</a> <span class="k">def</span> <span class="nf">loop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Debugging loop: handle event / dispatch to breakpoint. Returns when all targets are dead&quot;&quot;&quot;</span>
<span class="sd">&quot;&quot;&quot;Debugging loop: handle event / dispatch to breakpoint. Returns when all targets are dead/detached&quot;&quot;&quot;</span>
<span class="k">for</span> <span class="n">debug_event</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_debug_event_generator</span><span class="p">():</span>
<span class="bp">self</span><span class="o">.</span><span class="n">REMOVE_ME_debug_event</span> <span class="o">=</span> <span class="n">debug_event</span>
<span class="n">dbg_continue_flag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dispatch_debug_event</span><span class="p">(</span><span class="n">debug_event</span><span class="p">)</span>
@@ -910,7 +911,7 @@
<span class="k">return</span> <span class="n">DBG_CONTINUE</span></div>
<div class="viewcode-block" id="Debugger.on_single_step"><a class="viewcode-back" href="../../../debug.html#windows.debug.Debugger.on_single_step">[docs]</a> <span class="k">def</span> <span class="nf">on_single_step</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exception</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;Called on requested single step``exception`` is one of the following type:</span>
<span class="sd">&quot;&quot;&quot;Called on requested single step ``exception`` is one of the following type:</span>
<span class="sd"> * :class:`windows.winobject.exception.EEXCEPTION_DEBUG_INFO32`</span>
<span class="sd"> * :class:`windows.winobject.exception.EEXCEPTION_DEBUG_INFO64`</span>
+1 -1
View File
@@ -105,7 +105,7 @@
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">&quot;_handle&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle</span><span class="p">:</span>
<span class="n">dbgprint</span><span class="p">(</span><span class="s2">&quot;Closing Handle </span><span class="si">{0:#x}</span><span class="s2"> for </span><span class="si">{1}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_handle</span><span class="p">,</span> <span class="bp">self</span><span class="p">),</span> <span class="s2">&quot;HANDLE&quot;</span><span class="p">)</span>
<span class="c1">#dbgprint(&quot;Closing Handle {0} for {1}&quot;.format(hex(self._handle), self), &quot;HANDLE&quot;)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">_close_function</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_handle</span><span class="p">)</span>
+4 -3
View File
@@ -38,6 +38,7 @@ Implementing a COM interface
To create `COM` object you need to:
1. Describe your ComVtable `CODE1 <https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/simple_com.py#L89>`_
2. Implement the python functions described `CODE2 <https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/dbginterface/remote.py#L233>`_
3. Create an instance and pass it to whatever native function expects it `CODE3 <https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/dbginterface/remote.py#L438>`_
1. Create your ``COMImplementation`` with an ``IMPLEMENT`` attribute that should be a cominterface `CODE 1 <https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L48>`_
2. Implements the methods of the interface `CODE 2 <https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L55>`_
3. Create an instance `CODE3 <https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L59>`_
4. Pass it to whatever native function expects it `CODE4 <https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L272>`_
+3 -2
View File
@@ -389,6 +389,7 @@ Ouput::
Ouput::
(cmd λ) python.exe .\samples\debug_functionbp.py
NtCreateFile of <\??\C:\Windows\syswow64\en-US\calc.exe.mui>: handle = 0xac
Handle manually found! typename=<File>, name=<\Device\HarddiskVolume2\Windows\SysWOW64\en-US\calc.exe.mui>
@@ -407,7 +408,7 @@ Ouput::
''''''''''''''''''''''
In current process
^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~~~
.. literalinclude:: ..\..\samples\local_debugger.py
@@ -424,7 +425,7 @@ Ouput::
In remote process
^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~~
.. literalinclude:: ..\..\samples\local_debugger_remote_process.py
+4 -3
View File
@@ -85,9 +85,10 @@ You can then use the instance to call whatever method you need.</p>
<p>To create <cite>COM</cite> object you need to:</p>
<blockquote>
<div><ol class="arabic simple">
<li>Describe your ComVtable <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/simple_com.py#L89">CODE1</a></li>
<li>Implement the python functions described <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/dbginterface/remote.py#L233">CODE2</a></li>
<li>Create an instance and pass it to whatever native function expects it <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/ba40727d7d257b00f89fc6ca7296c9833b7b75b2/dbginterface/remote.py#L438">CODE3</a></li>
<li>Create your <code class="docutils literal"><span class="pre">COMImplementation</span></code> with an <code class="docutils literal"><span class="pre">IMPLEMENT</span></code> attribute that should be a cominterface <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L48">CODE 1</a></li>
<li>Implements the methods of the interface <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L55">CODE 2</a></li>
<li>Create an instance <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L59">CODE3</a></li>
<li>Pass it to whatever native function expects it <a class="reference external" href="https://github.com/sogeti-esec-lab/LKD/blob/efabf3cc38b94d4180ebe8d2c554da5d76b2fea1/lkd/dbginterface/base.py#L272">CODE4</a></li>
</ol>
</div></blockquote>
</div>
+9 -3
View File
@@ -93,6 +93,12 @@ The <a class="reference internal" href="#windows.debug.Debugger" title="windows.
</table>
</dd></dl>
<dl class="method">
<dt id="windows.debug.Debugger.detach">
<code class="descname">detach</code><span class="sig-paren">(</span><em>target=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/debugger.html#Debugger.detach"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.Debugger.detach" title="Permalink to this definition"></a></dt>
<dd><p>Detach from all debugged processes or process <code class="docutils literal"><span class="pre">target</span></code></p>
</dd></dl>
<dl class="classmethod">
<dt id="windows.debug.Debugger.debug">
<em class="property">classmethod </em><code class="descname">debug</code><span class="sig-paren">(</span><em>path</em>, <em>args=None</em>, <em>dwCreationFlags=0</em>, <em>show_windows=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/debugger.html#Debugger.debug"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.Debugger.debug" title="Permalink to this definition"></a></dt>
@@ -110,7 +116,7 @@ The <a class="reference internal" href="#windows.debug.Debugger" title="windows.
<dl class="method">
<dt id="windows.debug.Debugger.loop">
<code class="descname">loop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/debugger.html#Debugger.loop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.Debugger.loop" title="Permalink to this definition"></a></dt>
<dd><p>Debugging loop: handle event / dispatch to breakpoint. Returns when all targets are dead</p>
<dd><p>Debugging loop: handle event / dispatch to breakpoint. Returns when all targets are dead/detached</p>
</dd></dl>
<dl class="method">
@@ -212,7 +218,7 @@ and <code class="docutils literal"><span class="pre">DBG_EXCEPTION_NOT_HANDLED</
<dl class="method">
<dt id="windows.debug.Debugger.on_single_step">
<code class="descname">on_single_step</code><span class="sig-paren">(</span><em>exception</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/debugger.html#Debugger.on_single_step"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.Debugger.on_single_step" title="Permalink to this definition"></a></dt>
<dd><p>Called on requested single step``exception`` is one of the following type:</p>
<dd><p>Called on requested single step <code class="docutils literal"><span class="pre">exception</span></code> is one of the following type:</p>
<blockquote>
<div><ul class="simple">
<li><a class="reference internal" href="exception.html#windows.winobject.exception.EEXCEPTION_DEBUG_INFO32" title="windows.winobject.exception.EEXCEPTION_DEBUG_INFO32"><code class="xref py py-class docutils literal"><span class="pre">windows.winobject.exception.EEXCEPTION_DEBUG_INFO32</span></code></a></li>
@@ -405,7 +411,7 @@ It is based on <code class="xref py py-func docutils literal"><span class="pre">
<dl class="class">
<dt id="windows.debug.FunctionBP">
<em class="property">class </em><code class="descclassname">windows.debug.</code><code class="descname">FunctionBP</code><span class="sig-paren">(</span><em>target</em>, <em>addr=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/breakpoints.html#FunctionBP"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.FunctionBP" title="Permalink to this definition"></a></dt>
<dd><p>A breakpoint that accept a function from <a class="reference internal" href="winproxy.html#module-windows.winproxy" title="windows.winproxy"><code class="xref py py-mod docutils literal"><span class="pre">windows.winproxy</span></code></a> and able to:</p>
<dd><p>A breakpoint that accepts a function from <a class="reference internal" href="winproxy.html#module-windows.winproxy" title="windows.winproxy"><code class="xref py py-mod docutils literal"><span class="pre">windows.winproxy</span></code></a> and able to:</p>
<ul class="simple">
<li>Extract the arguments of the functions</li>
<li>Break at the return of the function</li>
+4
View File
@@ -315,6 +315,10 @@
</dl></dd>
<dt><a href="debug.html#windows.debug.Debugger.detach">detach() (windows.debug.Debugger method)</a>
</dt>
<dt><a href="network.html#windows.winobject.network.FirewallRule.direction">direction (windows.winobject.network.FirewallRule attribute)</a>
</dt>
+13 -3
View File
@@ -965,7 +965,6 @@ No more tracing !
<span class="sd">&quot;&quot;&quot;Check that BP/dbg can trigger single step and that instruction follows&quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">trigger</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbg</span><span class="p">,</span> <span class="n">exc</span><span class="p">):</span>
<span class="n">fault_addr</span> <span class="o">=</span> <span class="n">exc</span><span class="o">.</span><span class="n">ExceptionRecord</span><span class="o">.</span><span class="n">ExceptionInformation</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="kn">import</span> <span class="nn">pdb</span><span class="p">;</span><span class="n">pdb</span><span class="o">.</span><span class="n">set_trace</span><span class="p">()</span>
<span class="n">eip</span> <span class="o">=</span> <span class="n">dbg</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">pc</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Instruction at &lt;</span><span class="si">{0:#x}</span><span class="s2">&gt; wrote at &lt;</span><span class="si">{1:#x}</span><span class="s2">&gt;&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">eip</span><span class="p">,</span> <span class="n">fault_addr</span><span class="p">))</span>
<span class="n">dbg</span><span class="o">.</span><span class="n">single_step_counter</span> <span class="o">=</span> <span class="mi">4</span>
@@ -1065,7 +1064,8 @@ No more tracing !
</pre></div>
</div>
<p>Ouput:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>NtCreateFile of &lt;\??\C:\Windows\syswow64\en-US\calc.exe.mui&gt;: handle = 0xac
<div class="highlight-default"><div class="highlight"><pre><span></span>(cmd λ) python.exe .\samples\debug_functionbp.py
NtCreateFile of &lt;\??\C:\Windows\syswow64\en-US\calc.exe.mui&gt;: handle = 0xac
Handle manually found! typename=&lt;File&gt;, name=&lt;\Device\HarddiskVolume2\Windows\SysWOW64\en-US\calc.exe.mui&gt;
NtCreateFile of &lt;\Device\DeviceApi\CMApi&gt;: handle = 0x108
@@ -1081,6 +1081,8 @@ Exiting process
</div>
<div class="section" id="localdebugger">
<span id="sample-local-debugger"></span><h3>12.10.2. <code class="xref py py-class docutils literal"><span class="pre">LocalDebugger</span></code><a class="headerlink" href="#localdebugger" title="Permalink to this headline"></a></h3>
<div class="section" id="in-current-process">
<h4>12.10.2.1. In current process<a class="headerlink" href="#in-current-process" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">os.path</span>
<span class="kn">import</span> <span class="nn">pprint</span>
@@ -1137,6 +1139,9 @@ EXCEPTION !!!! Got a EXCEPTION_SINGLE_STEP(0x80000004L) at 0x770d7c04
Done!
</pre></div>
</div>
</div>
<div class="section" id="id1">
<h4>12.10.2.2. In remote process<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h4>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">os.path</span>
<span class="kn">import</span> <span class="nn">pprint</span>
@@ -1209,6 +1214,7 @@ Done!
</pre></div>
</div>
</div>
</div>
<div class="section" id="make-wmi-requests">
<span id="wmi-request"></span><h3>12.10.3. Make WMI requests<a class="headerlink" href="#make-wmi-requests" title="Permalink to this headline"></a></h3>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">sys</span>
@@ -1351,7 +1357,11 @@ Done!
<li><a class="reference internal" href="#windows-debug-functionbp">12.10.1.2. <code class="docutils literal"><span class="pre">windows.debug.FunctionBP</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#localdebugger">12.10.2. <code class="docutils literal"><span class="pre">LocalDebugger</span></code></a></li>
<li><a class="reference internal" href="#localdebugger">12.10.2. <code class="docutils literal"><span class="pre">LocalDebugger</span></code></a><ul>
<li><a class="reference internal" href="#in-current-process">12.10.2.1. In current process</a></li>
<li><a class="reference internal" href="#id1">12.10.2.2. In remote process</a></li>
</ul>
</li>
<li><a class="reference internal" href="#make-wmi-requests">12.10.3. Make WMI requests</a></li>
<li><a class="reference internal" href="#using-com-inetfwpolicy2">12.10.4. using COM: <code class="docutils literal"><span class="pre">INetFwPolicy2</span></code></a></li>
</ul>
+1 -1
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -143,7 +143,7 @@ It also offers some submodules aimed to help the interfacing with <code class="d
<dl class="attribute">
<dt id="windows.winobject.system.System.network">
<code class="descname">network</code><em class="property"> = &lt;windows.winobject.network.Network object at 0x04A61CF0&gt;</em><a class="headerlink" href="#windows.winobject.system.System.network" title="Permalink to this definition"></a></dt>
<code class="descname">network</code><em class="property"> = &lt;windows.winobject.network.Network object at 0x04FC0C30&gt;</em><a class="headerlink" href="#windows.winobject.system.System.network" title="Permalink to this definition"></a></dt>
<dd><p>Object of class <a class="reference internal" href="network.html#windows.winobject.network.Network" title="windows.winobject.network.Network"><code class="xref py py-class docutils literal"><span class="pre">windows.winobject.network.Network</span></code></a></p>
</dd></dl>
@@ -184,7 +184,7 @@ It also offers some submodules aimed to help the interfacing with <code class="d
<dl class="attribute">
<dt id="windows.winobject.system.System.registry">
<code class="descname">registry</code><em class="property"> = &lt;windows.winobject.registry.Registry object at 0x04A61D10&gt;</em><a class="headerlink" href="#windows.winobject.system.System.registry" title="Permalink to this definition"></a></dt>
<code class="descname">registry</code><em class="property"> = &lt;windows.winobject.registry.Registry object at 0x04FC0C50&gt;</em><a class="headerlink" href="#windows.winobject.system.System.registry" title="Permalink to this definition"></a></dt>
<dd><p>Object of class <a class="reference internal" href="registry.html#windows.winobject.registry.Registry" title="windows.winobject.registry.Registry"><code class="xref py py-class docutils literal"><span class="pre">windows.winobject.registry.Registry</span></code></a></p>
</dd></dl>
+3 -2
View File
@@ -389,6 +389,7 @@ Ouput::
Ouput::
(cmd λ) python.exe .\samples\debug_functionbp.py
NtCreateFile of <\??\C:\Windows\syswow64\en-US\calc.exe.mui>: handle = 0xac
Handle manually found! typename=<File>, name=<\Device\HarddiskVolume2\Windows\SysWOW64\en-US\calc.exe.mui>
@@ -407,7 +408,7 @@ Ouput::
''''''''''''''''''''''
In current process
^^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~~~
.. literalinclude:: ..\..\samples\local_debugger.py
@@ -424,7 +425,7 @@ Ouput::
In remote process
^^^^^^^^^^^^^^^^^
~~~~~~~~~~~~~~~~~
.. literalinclude:: ..\..\samples\local_debugger_remote_process.py