<?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[Funktions-Addresse, addieren, dividieren, Run-Time]]></title><description><![CDATA[<p>Hiho Leute,<br />
platform: c++, vista x64,vs2008<br />
bräuchte dringend hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>zum Problem:<br />
ich will mit VirtualAllocEx Speicher reservieren.<br />
dieser Speicher muss so groß sein wie der Bereich zwischen 2 Funktionen, z.b Funktion1 , Funktion2:<br />
ich versuche schon 3h, irgendwie aus diesen verdammten Funktionen-Addressen normale int32 zu machen, NO CHANCE!<br />
der verdammte compiler nimmt für jügliche zuweisung der Funktions-Addresse einfach das offset vom jmp table.....was ja falsch ist,</p>
<p>ich habe ein makro von Petriek:<br />
#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD_PTR)(ptr) + (DWORD_PTR)(addValue))<br />
dies funktioniert aber nur in C nicht C++, zumindest nicht bei mir....</p>
<p>ich weiß nicht was ich flasche mache.... versucht schon seit 3h den compiler austricksen, irgendwie ohne erfolg.... jegliche zuweisung endet mit einem offset.... egal ob cast nach TYPE*,TYPE........</p>
<p>hat jmd ne idee?????<br />
vielen dank für eure hilfe!!!!!</p>
<p>edit: sogar reinterpret_cast bau shice.....<br />
edit: nur im dbg modus baut geht über jmp table, nicht im release ? vllt jmd noch ne möglichkeit dass im dbg modus abzuschalten???</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228025/funktions-addresse-addieren-dividieren-run-time</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 05:43:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228025.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 22 Nov 2008 22:15:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktions-Addresse, addieren, dividieren, Run-Time on Sun, 23 Nov 2008 12:47:35 GMT]]></title><description><![CDATA[<p>Hiho Leute,<br />
platform: c++, vista x64,vs2008<br />
bräuchte dringend hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>zum Problem:<br />
ich will mit VirtualAllocEx Speicher reservieren.<br />
dieser Speicher muss so groß sein wie der Bereich zwischen 2 Funktionen, z.b Funktion1 , Funktion2:<br />
ich versuche schon 3h, irgendwie aus diesen verdammten Funktionen-Addressen normale int32 zu machen, NO CHANCE!<br />
der verdammte compiler nimmt für jügliche zuweisung der Funktions-Addresse einfach das offset vom jmp table.....was ja falsch ist,</p>
<p>ich habe ein makro von Petriek:<br />
#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD_PTR)(ptr) + (DWORD_PTR)(addValue))<br />
dies funktioniert aber nur in C nicht C++, zumindest nicht bei mir....</p>
<p>ich weiß nicht was ich flasche mache.... versucht schon seit 3h den compiler austricksen, irgendwie ohne erfolg.... jegliche zuweisung endet mit einem offset.... egal ob cast nach TYPE*,TYPE........</p>
<p>hat jmd ne idee?????<br />
vielen dank für eure hilfe!!!!!</p>
<p>edit: sogar reinterpret_cast bau shice.....<br />
edit: nur im dbg modus baut geht über jmp table, nicht im release ? vllt jmd noch ne möglichkeit dass im dbg modus abzuschalten???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619099</guid><dc:creator><![CDATA[phazz]]></dc:creator><pubDate>Sun, 23 Nov 2008 12:47:35 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Addresse, addieren, dividieren, Run-Time on Sat, 22 Nov 2008 22:57:45 GMT]]></title><description><![CDATA[<blockquote>
<p>ich weiß nicht was ich flasche mache</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>habe auch vista, c++ und vc2008 und das gleiche problem:</p>
<p>vc legt vor dem code eine art &quot;jumptable&quot; an die ungefähr so aussieht:</p>
<pre><code class="language-asm">...
04000000  jmp function1(04567EFh)
04000004  jmp function2(0654352h)
....
</code></pre>
<p>die addresse der funktion, also das was der cast ausspuckt ist ein zeiger in<br />
diese tabelle. dieses blöde verhalten macht den code sicherer, aber auch<br />
schwerer den funktionscode zu bekommen (CreateRemoteThread).</p>
<p>eine wirkliche lösung hab ich noch nicht, da bei mir im release modus alles<br />
wieder auf die funktion zeigt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<pre><code class="language-cpp">int getrightaddr(void *fp)
{
    return *reinterpret_cast&lt;int *&gt;(reinterpret_cast&lt;char&gt;(fp) + 1);
}
</code></pre>
<p>damit hol ich mir das sprungziel was hinter dem jump befehl steht.<br />
allerdings kann es sein (bei mir wars so) das die reihenfolge sich ändert,<br />
sprich die &quot;afterfunc&quot; steht in der tabelle nach der ersten funktion.<br />
was man machen kann ist eine dll mit den funktionen und mit GetProcAddress<br />
die wahren addressen holen.</p>
<p>MfG helferlein(mitleidender)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619120</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sat, 22 Nov 2008 22:57:45 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Addresse, addieren, dividieren, Run-Time on Sat, 22 Nov 2008 22:59:56 GMT]]></title><description><![CDATA[<p>edit:</p>
<p>du willst nicht zufällig das SAS-window handle holen? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>wenn du virtualallocex nimmst allocier einfach ein kb oder mehr das muss ja nur reinpassen und nicht speichersparen. da die funktion sowieso auf die nächste page aufrundet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619124</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sat, 22 Nov 2008 22:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Addresse, addieren, dividieren, Run-Time on Sun, 23 Nov 2008 12:17:56 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int getrightaddr(void *fp)
{
    return *reinterpret_cast&lt;int *&gt;(reinterpret_cast&lt;char&gt;(fp) + 1);
}
</code></pre>
<p>aber nichtmal der code, bringt irgendwie etwas.... komisch ?</p>
<p>damit hol ich mir das sprungziel was hinter dem jump befehl steht.<br />
allerdings kann es sein (bei mir wars so) das die reihenfolge sich ändert,<br />
sprich die &quot;afterfunc&quot; steht in der tabelle nach der ersten funktion.<br />
was man machen kann ist eine dll mit den funktionen und mit GetProcAddress<br />
die wahren addressen holen.</p>
<p>MfG helferlein(mitleidender)[/quote]</p>
<p>heho, vielen dank DIR!<br />
scheinbar keine &quot;&quot;schnelle&quot;&quot; lösung......<br />
ehrlich gesagt einfach nur zum ****** <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    />.........</p>
<p>aber nochmals vielen dank, an ne dll hät ich auch schon gedacht, aber naja ist ja net wirklich komfortabel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>jmd vllt ne alternative um den compiler &quot;auszutricksen&quot;???</p>
<p>edit: zum SAS, nee...... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619128</guid><dc:creator><![CDATA[phazz]]></dc:creator><pubDate>Sun, 23 Nov 2008 12:17:56 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Addresse, addieren, dividieren, Run-Time on Tue, 30 Dec 2008 20:47:27 GMT]]></title><description><![CDATA[<p>falls der thread noch aktuell ist, mit</p>
<pre><code class="language-cpp">static
</code></pre>
<p>vor den funktionen klappt alles so wie es soll, im release und im debug</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1637482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1637482</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Tue, 30 Dec 2008 20:47:27 GMT</pubDate></item></channel></rss>