<?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[Größe einer Funktion rausfinden?]]></title><description><![CDATA[<p>Hi!</p>
<p>Ist es irgendwie möglich die Größe einer Funktion in Bytes rauszufinden? Also die Größe des nativen Codes?</p>
<p>alá</p>
<pre><code class="language-cpp">void funktion( void )
{
  int a;

  for ( a=0; a&lt;100; ++a )
  {
    printf(&quot;%i\n&quot;, a);
  }
}

int main( int argc, char *argv[] )
{
  // Folgende Zeile geht wegen dem sizeof nicht
  printf( &quot;Funktion %p ist %u Bytes groß.&quot;, funktion, sizeof(funktion) );

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/150267/größe-einer-funktion-rausfinden</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 14:32:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150267.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jun 2006 16:06:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Wed, 14 Jun 2006 16:06:29 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ist es irgendwie möglich die Größe einer Funktion in Bytes rauszufinden? Also die Größe des nativen Codes?</p>
<p>alá</p>
<pre><code class="language-cpp">void funktion( void )
{
  int a;

  for ( a=0; a&lt;100; ++a )
  {
    printf(&quot;%i\n&quot;, a);
  }
}

int main( int argc, char *argv[] )
{
  // Folgende Zeile geht wegen dem sizeof nicht
  printf( &quot;Funktion %p ist %u Bytes groß.&quot;, funktion, sizeof(funktion) );

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1077749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077749</guid><dc:creator><![CDATA[ProfEich]]></dc:creator><pubDate>Wed, 14 Jun 2006 16:06:29 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Wed, 14 Jun 2006 16:10:34 GMT]]></title><description><![CDATA[<p>Nein. Wenn du es unbedingt wissen möchtst dann disassemble dein Programm und schau nach <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /><br />
Wozu braucht man soetwas denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077751</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077751</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Wed, 14 Jun 2006 16:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Wed, 14 Jun 2006 16:22:43 GMT]]></title><description><![CDATA[<p>Naja, der Sinn und Zweck der Sache sollte gerade sein, dass das disassemblen schwerer wird. Wollte halt Funktionen verschlüsseln und dann über komplexere Wege ausführen lassen (Geschwindigkeit würd zwar stark sinken, aber dafür würde das disassemblen schwerer). Hatte gehofft, man könnte einfach irgendwie die Größe rausfinden.. Oder irgendwie aus irgendeiner der vom Compiler/Linker erzeugten Dateien rauslesen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077762</guid><dc:creator><![CDATA[ProfEich]]></dc:creator><pubDate>Wed, 14 Jun 2006 16:22:43 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Wed, 14 Jun 2006 16:32:06 GMT]]></title><description><![CDATA[<p>ProfEich schrieb:</p>
<blockquote>
<p>Naja, der Sinn und Zweck der Sache sollte gerade sein, dass das disassemblen schwerer wird. Wollte halt Funktionen verschlüsseln und dann über komplexere Wege ausführen lassen (Geschwindigkeit würd zwar stark sinken, aber dafür würde das disassemblen schwerer). Hatte gehofft, man könnte einfach irgendwie die Größe rausfinden.. Oder irgendwie aus irgendeiner der vom Compiler/Linker erzeugten Dateien rauslesen..</p>
</blockquote>
<p>Über die Möglichkeiten, Code vor Reverse Engineering zu schützen, muss ich mich auch noch informieren (schon alleine, weil ich seit kurzem nebenbei an einem C++ Decompiler werkle - bin aber noch nicht mal beim Disassemblieren angekommen ;)).<br />
Was würde es dir denn bringen, die Funktionsgröße zu kennen? Mir fällt auf die schnelle kein Weg ein, daraus einen Nutzen zu ziehen.<br />
Während dem Dekompilieren von Hand sind mir ein paar Dinge aufgefallen, die jenen Vorgang ziemlich erschweren können:<br />
- Arbeiten mit Gleitkommazahlen<br />
- Verwenden von virtuellen Funktion<br />
- fehlende Symbolnamen natürlich (Funktionsnamen, etc.)<br />
- viel (zum Teil vom Compiler automatisch erzeuges) Inlineing (Funktionsaufrufe wurden einfach komplett durch die Funktion ersetzt)<br />
Warum möchtest du es denn möglichst gut schützen? Macht das Programm etwas, bei dem man Manipulationen vorbeugen sollte, wie z.B. bei Multiplayerspielen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077767</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Wed, 14 Jun 2006 16:32:06 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Wed, 14 Jun 2006 22:30:45 GMT]]></title><description><![CDATA[<p>hehe~ jo, ich bin ja selber ein (in manchen Communities sogar sehr bekannter) reverser. Daher kenne ich auch Dinge, die es schwerer machen den Code zu reversen. Aber trotzdem Danke für die Tipps..</p>
<p>Nun.. Gerade beim VERSCHLÜSSELN der Funktion wäre es praktisch, die Größe zu wissen. Zumal der Code ja erst im Nachhinein verschlüsselt werden soll (also IN der erstellen EXE). Also praktisch per PostProcessing. So, dass der orginalcode nirgendwo mehr in der EXE steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077898</guid><dc:creator><![CDATA[ProfEich]]></dc:creator><pubDate>Wed, 14 Jun 2006 22:30:45 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Thu, 15 Jun 2006 07:37:59 GMT]]></title><description><![CDATA[<p>Es gibt verschiedene Methoden dazu - eine wäre zum Beispiel, für jede Funktion ein Segment zu vergeben.</p>
<p>Allerdings macht das überhaupt keinen Sinn, da sowhl sämtliche direkten Sprungadressen als auch Variablenreferenzen leicht hinfällig werden können.</p>
<p>Warum nicht lieber die zu schützenden Funktionen in eine DLL packen, selbige dann verschlüsseln und später während der Lauzeit entschlüsseln und selber laden?</p>
<p>Gruss,<br />
Glen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1077967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1077967</guid><dc:creator><![CDATA[Glen]]></dc:creator><pubDate>Thu, 15 Jun 2006 07:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Thu, 15 Jun 2006 15:33:45 GMT]]></title><description><![CDATA[<p>ProfEich schrieb:</p>
<blockquote>
<p>Nun.. Gerade beim VERSCHLÜSSELN der Funktion wäre es praktisch, die Größe zu wissen. Zumal der Code ja erst im Nachhinein verschlüsselt werden soll (also IN der erstellen EXE). Also praktisch per PostProcessing. So, dass der orginalcode nirgendwo mehr in der EXE steht.</p>
</blockquote>
<p>Warum machst du es dann nicht so, dass du den Entschlüsselungscode an den Anfang der ausführbaren Datei packst, dann in den Speicher entschlüsselst (vielleicht auch JIT) und reinhüpfst?! Also quasi eine VM direkt in der Datei.</p>
<p>Aber ehrlich gesagt frage ich mich, wozu man Code verschlüsseln will?! So wahnsinnig genial kann der doch gar nicht sein... :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1078297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1078297</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 15 Jun 2006 15:33:45 GMT</pubDate></item><item><title><![CDATA[Reply to Größe einer Funktion rausfinden? on Thu, 15 Jun 2006 16:47:52 GMT]]></title><description><![CDATA[<p>Glen schrieb:</p>
<blockquote>
<p>Es gibt verschiedene Methoden dazu - eine wäre zum Beispiel, für jede Funktion ein Segment zu vergeben.</p>
<p>Allerdings macht das überhaupt keinen Sinn, da sowhl sämtliche direkten Sprungadressen als auch Variablenreferenzen leicht hinfällig werden können.</p>
<p>Warum nicht lieber die zu schützenden Funktionen in eine DLL packen, selbige dann verschlüsseln und später während der Lauzeit entschlüsseln und selber laden?</p>
<p>Gruss,<br />
Glen.</p>
</blockquote>
<p>Hey, die Idee gefällt mir! Ich glaube der bin ich bei irgendeinem Spiel schonmal begegnet. Dann müsste man die DLL nur ins Temp-Verzeichnis entpacken, Lesezugriff verweigern (falls das geht) und verwenden. Unter Linux wäre das sicher nicht so einfach, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1078377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1078377</guid><dc:creator><![CDATA[Neku]]></dc:creator><pubDate>Thu, 15 Jun 2006 16:47:52 GMT</pubDate></item></channel></rss>