<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern:]]></title><description><![CDATA[<p>Hi Leute,<br />
Habe mich mal gefragt ob es möglich ist im Arbeitsspeicher auch Adressen zu ändern, welche nichts mit dem eigenen Programm zutun haben.<br />
Also zum Beispiel, dass ich sagen könnte an Adresse 0x334429 soll jetzt der Wert 0100 stehen oder so...</p>
<p>Habe ein kleines Programm dazu geschrieben, was aber nicht funktioniert.<br />
Ich gehe davon aus, dass Windoof das schützt- oder woran genau liegt es, dass das Programm 'für windows ein problem darstellt'^^</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using std::vector;
using std::cout;
using std::cin;
using std::string;
int main() 
{ 
   string s = &quot;hi&quot;;  
   for(int a = 0; a&lt;10; a++)
   {   
      string *sio = &amp;s+a;
      *sio = &quot;hi&quot;;
   }   
}
</code></pre>
<p>cya<br />
David</p>
<p>PS:</p>
<p>Nur lesen scheint zu gehen (ab speicherstelle 'hi'):</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using std::vector;
using std::cout;
using std::cin;
using std::string;
int main() 
{ 
   string s = &quot;hi&quot;;  
   int b;
   for(int a = 0; a&lt;10; a++)
   {   
      cout &lt;&lt; &amp;s+a;
   }  
   cin &gt;&gt; b; 
}
</code></pre>
<p>Aber nicht den Inhalt der Speicherstellen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using std::vector;
using std::cout;
using std::cin;
using std::string;
int main() 
{ 
   string s = &quot;hi&quot;,*i;  
   i = &amp;s;
   int b;
   for(int a = 0; a&lt;2; a++)
   {   
      cout &lt;&lt; *(i+a);
   }  
   cin &gt;&gt; b; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/192368/adresse-außerhalb-des-speicherbereichs-des-eigenen-programmes-ändern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:14:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192368.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 13 Sep 2007 13:23:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern: on Thu, 13 Sep 2007 13:28:06 GMT]]></title><description><![CDATA[<p>Hi Leute,<br />
Habe mich mal gefragt ob es möglich ist im Arbeitsspeicher auch Adressen zu ändern, welche nichts mit dem eigenen Programm zutun haben.<br />
Also zum Beispiel, dass ich sagen könnte an Adresse 0x334429 soll jetzt der Wert 0100 stehen oder so...</p>
<p>Habe ein kleines Programm dazu geschrieben, was aber nicht funktioniert.<br />
Ich gehe davon aus, dass Windoof das schützt- oder woran genau liegt es, dass das Programm 'für windows ein problem darstellt'^^</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using std::vector;
using std::cout;
using std::cin;
using std::string;
int main() 
{ 
   string s = &quot;hi&quot;;  
   for(int a = 0; a&lt;10; a++)
   {   
      string *sio = &amp;s+a;
      *sio = &quot;hi&quot;;
   }   
}
</code></pre>
<p>cya<br />
David</p>
<p>PS:</p>
<p>Nur lesen scheint zu gehen (ab speicherstelle 'hi'):</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using std::vector;
using std::cout;
using std::cin;
using std::string;
int main() 
{ 
   string s = &quot;hi&quot;;  
   int b;
   for(int a = 0; a&lt;10; a++)
   {   
      cout &lt;&lt; &amp;s+a;
   }  
   cin &gt;&gt; b; 
}
</code></pre>
<p>Aber nicht den Inhalt der Speicherstellen:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;vector&gt;
using std::vector;
using std::cout;
using std::cin;
using std::string;
int main() 
{ 
   string s = &quot;hi&quot;,*i;  
   i = &amp;s;
   int b;
   for(int a = 0; a&lt;2; a++)
   {   
      cout &lt;&lt; *(i+a);
   }  
   cin &gt;&gt; b; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1364669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364669</guid><dc:creator><![CDATA[777]]></dc:creator><pubDate>Thu, 13 Sep 2007 13:28:06 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern: on Thu, 13 Sep 2007 14:06:29 GMT]]></title><description><![CDATA[<p>777 schrieb:</p>
<blockquote>
<p>Ich gehe davon aus, dass Windoof das schützt- oder woran genau liegt es, dass das Programm 'für windows ein problem darstellt'^^</p>
</blockquote>
<p>Windows schützt (ebenso wie einige andere Betriebssysteme) tatsächlich den Adressraum. Ein direktes Manipulieren vom Adressbereich außerhalb des Prozesses wird vom System unterbunden.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364695</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 13 Sep 2007 14:06:29 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern: on Thu, 13 Sep 2007 14:07:24 GMT]]></title><description><![CDATA[<p>Ginge es theoretisch mit Assembler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364696</guid><dc:creator><![CDATA[777]]></dc:creator><pubDate>Thu, 13 Sep 2007 14:07:24 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern: on Thu, 13 Sep 2007 14:08:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Schau mal hier rein<br />
<a href="http://www.online-tutorials.net/security/speicherzugriff-tutorial-teil-1/tutorials-t-27-63.html" rel="nofollow">http://www.online-tutorials.net/security/speicherzugriff-tutorial-teil-1/tutorials-t-27-63.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364698</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 13 Sep 2007 14:08:03 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern: on Thu, 13 Sep 2007 14:12:11 GMT]]></title><description><![CDATA[<p>Eines der Grundprinzipien eines Multitasking Betriebssystem ist, dass Prozesse nicht einfach an beliebigen Speicherstellen rumpfuschen , und somit fremde Prozesse oder sogar das Betriebssystem zu abstürzen bringen können. Deshalb läuft jeder Prozess in seinem eigenen Speicherbereich, der vom btriebssystem beim Programmstart zur Verfügung gestellt wird. Zugriffsversuche außerhalb dieses Speicherbereiches beantwortet das System mit Speicherzugriffsfehlern, dem typischen &quot;die Anwendung muss beendet werden...&quot;. Nun kann es aber sein, dass du auf uninitialisierten Speicher deines eigenen Prozesses zugreifst, darüber hat Windows keine Kontrolle, dein Programm wird also nicht direkt abstürzen, aber evtl. seine eigenen Variablen überschreiben und somit undefiniertes Verhalten auslösen...<br />
Was du versuchst:<br />
Du reservierst Speicher für eine Klasse vom Typ string. Diese Klasse verwaltet aber ihre eigentlichen Daten dynamisch, so dass diese wo völlig anders im Speicher liegen können. Du schreibst also in den Speicher hinter s, wo dann irgendwo deine Zählvariable a liegt, welche du dann z.B. mit dem ASCII-Wert von 'h' überschreibst,<br />
du verlierst also die Kontrolle darüber, was dein Programm eigentlich macht...</p>
<p>Grüße,</p>
<p>Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364701</guid><dc:creator><![CDATA[JimmydaMage]]></dc:creator><pubDate>Thu, 13 Sep 2007 14:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to Adresse außerhalb des Speicherbereichs des eigenen Programmes ändern: on Thu, 13 Sep 2007 14:15:38 GMT]]></title><description><![CDATA[<blockquote>
<p>Ginge es theoretisch mit Assembler?</p>
</blockquote>
<p>Nein, jeder gestartete Prozess läuft in seinem eigenen Speicherbereich, das ist ein Mechanismus, der direkt vom Prozessor zur Verfügung gestellt und vom Betriebssytem verwaltet wird, Stichwort &quot;Protected Mode&quot;...</p>
<p>Grüße,</p>
<p>Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1364704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1364704</guid><dc:creator><![CDATA[JimmydaMage]]></dc:creator><pubDate>Thu, 13 Sep 2007 14:15:38 GMT</pubDate></item></channel></rss>