<?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[Breaking Information Hiding: otze hat mich herausgefordert...]]></title><description><![CDATA[<p>Zweig von<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-251787-and-start-is-24.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-251787-and-start-is-24.html</a></p>
<ol>
<li></li>
</ol>
<pre><code class="language-cpp">class base{ 
    virtual void foo(){} 
    virtual void bar(){} 
}; 

class test1:public base 
{ 
    int a; 
};
</code></pre>
<p>Das ist einfach:</p>
<pre><code class="language-cpp">class test1_breaker : public base
{
 public:
   int a;  
};
...
((test1_breaker*)&amp;test1_instance)-&gt;a = 23
</code></pre>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">class test2 
{ 
    static int a; 
}
</code></pre>
<p>keine Ahnung</p>
<ol start="3">
<li></li>
</ol>
<pre><code class="language-cpp">class test3 
{ 
    class Private; 
    Private* a; 
};
</code></pre>
<p>Müsste wie 1. gehen:</p>
<pre><code class="language-cpp">class test3_breaker
{
public:
 class Private
 {
   public:
     /* hier dummy-implementierung von Private, so dass die Adressen passen */
 }
 Private * a;
}
</code></pre>
<p>so, könnt ihr mir weiterhelfen? Kann man irgendwie die adresse der statischen variablen raten? Weiter komme ich nicht. (ja otze, du darfst auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Dass das ganze undefined behaviour ist, ist klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251945/breaking-information-hiding-otze-hat-mich-herausgefordert</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 06:46:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251945.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Oct 2009 21:03:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Breaking Information Hiding: otze hat mich herausgefordert... on Mon, 12 Oct 2009 21:03:36 GMT]]></title><description><![CDATA[<p>Zweig von<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-251787-and-start-is-24.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-251787-and-start-is-24.html</a></p>
<ol>
<li></li>
</ol>
<pre><code class="language-cpp">class base{ 
    virtual void foo(){} 
    virtual void bar(){} 
}; 

class test1:public base 
{ 
    int a; 
};
</code></pre>
<p>Das ist einfach:</p>
<pre><code class="language-cpp">class test1_breaker : public base
{
 public:
   int a;  
};
...
((test1_breaker*)&amp;test1_instance)-&gt;a = 23
</code></pre>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">class test2 
{ 
    static int a; 
}
</code></pre>
<p>keine Ahnung</p>
<ol start="3">
<li></li>
</ol>
<pre><code class="language-cpp">class test3 
{ 
    class Private; 
    Private* a; 
};
</code></pre>
<p>Müsste wie 1. gehen:</p>
<pre><code class="language-cpp">class test3_breaker
{
public:
 class Private
 {
   public:
     /* hier dummy-implementierung von Private, so dass die Adressen passen */
 }
 Private * a;
}
</code></pre>
<p>so, könnt ihr mir weiterhelfen? Kann man irgendwie die adresse der statischen variablen raten? Weiter komme ich nicht. (ja otze, du darfst auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
<p>Dass das ganze undefined behaviour ist, ist klar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1791663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1791663</guid><dc:creator><![CDATA[Ei Eitsch]]></dc:creator><pubDate>Mon, 12 Oct 2009 21:03:36 GMT</pubDate></item><item><title><![CDATA[Reply to Breaking Information Hiding: otze hat mich herausgefordert... on Tue, 13 Oct 2009 11:12:40 GMT]]></title><description><![CDATA[<p>3. bräuchte nicht mal so kompliziert zu sein - die Private Klassendeklaration ist egal, du brauchst lediglich eine im Layout identische Klasse zu haben:</p>
<pre><code class="language-cpp">class test3
{
    class Private;
    Private* a;
}; 

struct smells_like_test3_private;

struct test3_breaker
{
  smells_like_test3_private* a;
};
</code></pre>
<p>an den static member kommst du aber beim besten Willen nicht ran, wenn du nicht gerade das Glück hast, dass irgendjemand mit Berechtigung einen pointer auf test2::a hält - in dem Fall kannst du mit den gleichen Trickdieb-Methoden auch dort die Informationen rausklauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1791901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1791901</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 13 Oct 2009 11:12:40 GMT</pubDate></item></channel></rss>