<?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[Länge einer Compilierten Funktion ermitteln]]></title><description><![CDATA[<p>Gib es eine einfache Möglichkeit die Länge einer fertig compilierten Funktion zu ermitteln?</p>
<p>Mit einem Pointer auf diese Funktion ist mir nicht geholfen. Ich muss den kompletten compilierten &quot;Code&quot; während der Laufzeit kopieren und an eine andere Stelle einfügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164229/länge-einer-compilierten-funktion-ermitteln</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Jul 2026 14:12:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164229.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Nov 2006 12:46:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 12:46:04 GMT]]></title><description><![CDATA[<p>Gib es eine einfache Möglichkeit die Länge einer fertig compilierten Funktion zu ermitteln?</p>
<p>Mit einem Pointer auf diese Funktion ist mir nicht geholfen. Ich muss den kompletten compilierten &quot;Code&quot; während der Laufzeit kopieren und an eine andere Stelle einfügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169566</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Mon, 06 Nov 2006 12:46:04 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 12:48:20 GMT]]></title><description><![CDATA[<p>Nein, gibt es nicht (jedenfalls nichts portables). Wozu benötigst du diese Angabe überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169571</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Nov 2006 12:48:20 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 12:52:56 GMT]]></title><description><![CDATA[<p>Ich muss den fertig compilierten Code der Funktion kopieren und dafür brauche ich zumindest die Länge. Die Startadresse hab ich ja über den Funktionspointer aber ich kenn das Ende nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169579</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Mon, 06 Nov 2006 12:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 12:53:46 GMT]]></title><description><![CDATA[<p>Sowas kann es überhaupt nie geben... der Compiler kann alles mögliche Optimieren und die Implementierung mag von Version zu Version unterschiedlich sein (auch ohne Optimierung).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169581</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 06 Nov 2006 12:53:46 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 14:21:53 GMT]]></title><description><![CDATA[<p>Hier meine jetzige Lösung (etwas frickelig, aber es scheint ja nicht anders zu funktionieren) :</p>
<p>Die Startadresse der Funktion ist bekannt über den Funktionspointer.<br />
Fehlt somit noch das Ende welches unbekannt ist. Da ich die Funktion selber kenne und diese keinen Rückgabeparameter hat, wird diese folglich am Ende mit einem Assembler 'RET' (Return, Maschinencode 0xC3) ausgeführt.<br />
Ich suche ab der Startposition der Funktion danach und habe somit das Ende und kann die Länge kalkulieren.</p>
<p>FERTIG. Hoffe das Funktioniert. Bisher ist es nur Theorie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169680</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Mon, 06 Nov 2006 14:21:53 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 15:46:52 GMT]]></title><description><![CDATA[<p>Hi, habe das bisher immer so gemacht und hat immer funktioniert. (was nicht heißen soll, dass es immer funktionieren muss <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>
<pre><code class="language-cpp">#pragma check_stack(off)

static DWORD WINAPI ThreadFunc( LPVOID ) 
{
...
}

static void AfterThreadFunc (void) {}

#pragma check_stack 

const int cbCodeSize = ((LPBYTE) AfterThreadFunc - (LPBYTE) ThreadFunc);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1169773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169773</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Mon, 06 Nov 2006 15:46:52 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 18:20:40 GMT]]></title><description><![CDATA[<p>MarcelL schrieb:</p>
<blockquote>
<p>Hoffe das Funktioniert.</p>
</blockquote>
<p>Nein, wird es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169921</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 06 Nov 2006 18:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 18:34:39 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>MarcelL schrieb:</p>
<blockquote>
<p>Hoffe das Funktioniert.</p>
</blockquote>
<p>Nein, wird es nicht.</p>
</blockquote>
<p>Warum würde mich mal interessieren?</p>
<p>Dafür sollte meine &quot;Lösung&quot; funktionieren <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1169934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169934</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Mon, 06 Nov 2006 18:34:39 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 20:26:33 GMT]]></title><description><![CDATA[<p>MarcelL schrieb:</p>
<blockquote>
<p>Fehlt somit noch das Ende welches unbekannt ist. Da ich die Funktion selber kenne und diese keinen Rückgabeparameter hat, wird diese folglich am Ende mit einem Assembler 'RET' (Return, Maschinencode 0xC3) ausgeführt.</p>
</blockquote>
<p>Und wie kannst du dir sicher sein, das 0xc3 nicht noch in irgendeiner anderen Befehlssequenz vorkommt?</p>
<p>Und auch der Vorschlag von yogle ist zweifelhaft, da es keine Garantie gibt, dass die Funktionen in der entsprechenden Reihenfolge im Code abgelegt werden.<br />
Imo ist sowas nur auf Assemblerebene zuverlässig machbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170036</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 06 Nov 2006 20:26:33 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 20:30:12 GMT]]></title><description><![CDATA[<p>Sobald ein Sprungbefehl in der Funktion drin ist (z.B. durch &quot;if&quot; verursacht), kann der Compiler die beiden Code-Fragmente an vollkommen unterschiedlichen Stellen (nicht mal aufeinanderfolgend) anbringen! Ganz zu schweigen was der Compiler macht, wenn man die Optimierungen aktiviert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170044</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Mon, 06 Nov 2006 20:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 22:03:03 GMT]]></title><description><![CDATA[<p>musst dir halt einen kleinen disassembler schreiben oder eine fertige disassembler lib nehmen.<br />
moeglich is das damit durchaus blos einfach nach dem opcode suchen 0xC3 kann nicht zuverlaessig funktionieren da, wie schon gesagt wurde, der wert 0xc3 auch als parameter zu einem opcode vorkommen kann.<br />
In der theorie muss zwar eine funktion nicht mit einem 'ret' beendet werden is aber sicher zu 99% der fall</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170098</guid><dc:creator><![CDATA[disasm]]></dc:creator><pubDate>Mon, 06 Nov 2006 22:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Mon, 06 Nov 2006 22:07:36 GMT]]></title><description><![CDATA[<p>achja um einen disassembler wirst du wahrscheinlich auch mit der methode yogle nicht herumkommen da wenn du eine funktion wo anders hinkopierst relative adressen (zb von 'call's) nicht mehr stimmen! Die muesstest du finden und anpassen wenn die funktion lauffaehig bleiben soll...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170100</guid><dc:creator><![CDATA[disasm]]></dc:creator><pubDate>Mon, 06 Nov 2006 22:07:36 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Tue, 07 Nov 2006 08:03:11 GMT]]></title><description><![CDATA[<p>groovemaster schrieb:</p>
<blockquote>
<p>MarcelL schrieb:</p>
<blockquote>
<p>Fehlt somit noch das Ende welches unbekannt ist. Da ich die Funktion selber kenne und diese keinen Rückgabeparameter hat, wird diese folglich am Ende mit einem Assembler 'RET' (Return, Maschinencode 0xC3) ausgeführt.</p>
</blockquote>
<p>Und wie kannst du dir sicher sein, das 0xc3 nicht noch in irgendeiner anderen Befehlssequenz vorkommt?</p>
</blockquote>
<p>Weil diese &quot;spezielle&quot; Funktion minimal gehalten ist und maximal 70 Byte Lang ist.</p>
<p>Weil ich den compilierten Code in Assembler angeschaut habe und keine weiteren 0xC3`s vorkommen.</p>
<p>Weil es soeben funktioniert hat.</p>
<p>Das es keine 100% kompatible Lösung gibt ist mir klar. Ich muss halt jetzt bei jedem compilieren schauen wie der passende Assembler Code ausschaut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170197</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Tue, 07 Nov 2006 08:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Tue, 07 Nov 2006 08:30:08 GMT]]></title><description><![CDATA[<p>MarcelL schrieb:</p>
<blockquote>
<p>[quote=&quot;groovemasterWeil diese &quot;spezielle&quot; Funktion minimal gehalten ist und maximal 70 Byte Lang ist.</p>
</blockquote>
<p>Und wer garantiert Dir, dass eine unterschiedliche Ladeposition (Relokation) nicht zu einer Änderung in Deinem Code führt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170217</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Tue, 07 Nov 2006 08:30:08 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Tue, 07 Nov 2006 08:34:08 GMT]]></title><description><![CDATA[<p>Naja, das sagte ich doch. Ich kenne den Assembler Code der hinter dieser &quot;minimal&quot; Funktion steckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170220</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Tue, 07 Nov 2006 08:34:08 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Tue, 07 Nov 2006 10:00:36 GMT]]></title><description><![CDATA[<p>MarcelL schrieb:</p>
<blockquote>
<p>Naja, das sagte ich doch. Ich kenne den Assembler Code der hinter dieser &quot;minimal&quot; Funktion steckt.</p>
</blockquote>
<p>Wenn Du denn Assembler-Code eh kennst, dann brauchst Du hier noch so unnötige und unzuverlässige Methoden anwenden. Dann mach sowas wie:</p>
<pre><code class="language-cpp">unsigned char myFunction[] = {0x03, 0x22, 0x54, 0x02, 0xc3 };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1170273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170273</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Tue, 07 Nov 2006 10:00:36 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Tue, 07 Nov 2006 20:17:28 GMT]]></title><description><![CDATA[<p>MarcelL schrieb:</p>
<blockquote>
<p>Weil diese &quot;spezielle&quot; Funktion minimal gehalten ist und maximal 70 Byte Lang ist.</p>
</blockquote>
<p>Dann schreib sie doch komplett mit Inline Assembler, dann bekommst du auch problemlos die Länge raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170747</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 07 Nov 2006 20:17:28 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 03:26:07 GMT]]></title><description><![CDATA[<p>Wozu willst du das überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170850</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 08 Nov 2006 03:26:07 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 09:28:21 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Wozu willst du das überhaupt?</p>
</blockquote>
<p>brauche das für für eine DLL Injektion ohne dabei über die Windows Hook Funktionen zu gehen.</p>
<p>Ich öffne einen Prozess, allokiere mir ein wenig virtuellen Speicher. Injiziere dann meine Dll, eine Struktur mit eine paar Funktionspointer und die &quot;Funktion&quot; über die wir reden um einen Thread in der Dll zu starten :-).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170955</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Wed, 08 Nov 2006 09:28:21 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 09:40:55 GMT]]></title><description><![CDATA[<p>das hört sich illegal an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170963</guid><dc:creator><![CDATA[:alarm:]]></dc:creator><pubDate>Wed, 08 Nov 2006 09:40:55 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 11:33:07 GMT]]></title><description><![CDATA[<p>MarcelL schrieb:</p>
<blockquote>
<p>brauche das für für eine DLL Injektion ohne dabei über die Windows Hook Funktionen zu gehen.</p>
<p>Ich öffne einen Prozess, allokiere mir ein wenig virtuellen Speicher. Injiziere dann meine Dll, eine Struktur mit eine paar Funktionspointer und die &quot;Funktion&quot; über die wir reden um einen Thread in der Dll zu starten :-).</p>
</blockquote>
<p>Mit welchen Ziel ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171020</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 08 Nov 2006 11:33:07 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 13:31:33 GMT]]></title><description><![CDATA[<p>Ein Kollege von mir meinte, dass es unmöglich wäre bei einem Computerspiel welches von Punkbuster geschützt wird einen Trainer zu benutzen.</p>
<p>Einer der einfachsten Methoden solche Programme zu überlisten ist nunmal die Dll Injektion :-).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171088</guid><dc:creator><![CDATA[MarcelL]]></dc:creator><pubDate>Wed, 08 Nov 2006 13:31:33 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 18:25:53 GMT]]></title><description><![CDATA[<p>Hmm dieses PunkBuster hört sich interessant an. Die Erfolgsgeschichte des Programms ist ja atemberaubent, heutzutage bauen ja wahnsinnig viele dieses Ding in ihr Spiel ein!</p>
<p>PunkBuster scannt anscheinend aber auch den Speicher ab. Mit nur den Code reinzuladen und auszuführen wird es wohl nicht getan sein. Was willst du denn am Spiel/Code verändern?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171346</guid><dc:creator><![CDATA[yogle]]></dc:creator><pubDate>Wed, 08 Nov 2006 18:25:53 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Wed, 08 Nov 2006 18:36:03 GMT]]></title><description><![CDATA[<p>yogle schrieb:</p>
<blockquote>
<p>Hmm dieses PunkBuster hört sich interessant an. Die Erfolgsgeschichte des Programms ist ja atemberaubent, heutzutage bauen ja wahnsinnig viele dieses Ding in ihr Spiel ein!</p>
</blockquote>
<p>Naja das hat ja auch einen Grund... *Kopfschüttel*</p>
<p>PS: Hier mal die <strong>Funktionsweise</strong>:</p>
<blockquote>
<p>PunkBuster funktioniert nach dem Client-Server-Prinzip. Der PunkBuster-Client läuft auf dem Computer des Spielers und überwacht, ähnlich einem Virenscanner, den PC und scannt dabei den Arbeitsspeicher und einige Spieledateien auf der Festplatte nach Cheats. Der Server fragt in regelmäßigen Abständen bei den verbundenen Clients nach, ob der Spielerechner noch cheatfrei ist. Der Spieler wird aus dem Spiel ausgeschlossen, sobald ein bekannter Cheat gefunden wird.</p>
<p>Da der Spieler gewöhnlich vollen Zugriff auf seinen Computer hat, kann dieser mit ausreichend Erfahrung die Funktionsweise eines Programms manipulieren, also auch den Anti-Cheat-Client wirkungslos machen. Even Balance versucht dies zu verhindern, indem es PunkBuster zum Beispiel Prüfsummen abgleichen lässt, um die Echtheit des Programms zu verifizieren. Zudem müssen Spiele, und somit auch Punkbuster, unter dem Betriebssystem Windows mit Administratorrechten gestartet werden.</p>
<p>PunkBuster ist mit einem Updatesystem ausgestattet, das Server und Client automatisch auf den neuesten Stand bringt. Durch ständiges Aktualisieren der Software können so schnell neue Cheats gesperrt werden, sofern sie dem Entwickler bekannt sind. Ein weiteres Feature ist zudem die Möglichkeit für den Serverbetreiber, Bildschirmfotos von allen zum Server verbundenen Spielern zu machen, um nachzprüfen, ob ein Spieler die Darstellung manipuliert hat.</p>
</blockquote>
<p>Quelle <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> <a href="http://de.wikipedia.org/wiki/PunkBuster" rel="nofollow">http://de.wikipedia.org/wiki/PunkBuster</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171350</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171350</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Wed, 08 Nov 2006 18:36:03 GMT</pubDate></item><item><title><![CDATA[Reply to Länge einer Compilierten Funktion ermitteln on Fri, 10 Nov 2006 02:08:47 GMT]]></title><description><![CDATA[<p>Naja, CreateRemoteThread wäre wohl am einfachsten, was? :^)<br />
Andrerseits wird der PunkBuster das wenn er schlau ist mitbekommen...<br />
Wenn er auch nur ein bisschen schlauer ist bekommt er das CreateThread aber auch so mit. Aber probieren schadet nicht, vielleicht haben die ne allgemeine &quot;thread überwachung&quot; nicht hinbekommen so dass sie sich mit genügend normalen Tools, Libraries und Programmierpraktiken verträgt.</p>
<p>Vielleicht könntest du versuchen eine Windows Funktion ala GetMessage zu &quot;hooken&quot; (patchen), indem du die ersten paar Bytes mit einem jmp auf einen Stub überschreibst. Brauchste allerdings einen dynamischen Disassembler dazu, oder viel Vertrauen dass sich die Implementierung der entsprechenden Funktion nicht so schnell ändert. Und ist auch nicht ganz einfach...<br />
Siehe hier: <a href="http://www.internals.com/articles/apispy/apispy.htm" rel="nofollow">http://www.internals.com/articles/apispy/apispy.htm</a><br />
(Der Absatz &quot;Patch the API&quot;)</p>
<p>BTW: in dem Fall wäre es (wenn du bei deinem Ansatz bleiben willst) denke ich wirklich einfacher die Funktion in inline-asm zu schreiben, dann kannst du die auch schön position-independant schreiben und musst nicht erst Adressen patchen.</p>
<p>Noch eine andere Möglichkeit wäre vielleicht nen Filtertreiber über irgendein Gerät drüberzustülpen welches das Spiel garantiert verwendet - dann bist du gleich mit Kernelmode-Rechten im Prozess deines Interesses unterwegs. Auch nicht übel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1171903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1171903</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 10 Nov 2006 02:08:47 GMT</pubDate></item></channel></rss>