<?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[buffer von gehookter send funktion auslesen??]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe in einem Programm send mit detours gehookt und möchte nun überprüfen ob im buffer überprüfen ob ein bestimmtes packet gesendet wird. Und wenn dem so is, soll erstmal nichts gemacht werden, wenn nicht soll alles normal laufen...</p>
<p>die packets werden in einem char array gesendet.<br />
habe dazu folgenden code:</p>
<pre><code class="language-cpp">#include &lt;WinSock2.h&gt;
#include &lt;windows.h&gt;
#include &lt;detours.h&gt;

#pragma comment(lib, &quot;detours.lib&quot;)
#pragma comment(lib, &quot;Ws2_32.lib&quot;)

typedef int (WINAPI * tSend)(SOCKET s, char *buf, int len, int flags);
tSend oSend = NULL;

int WINAPI mySend(SOCKET s, char *buf, int len, int flags)
{
	if ( buf[9] == 0xD0 &amp;&amp;
		 buf[10] == 0x8B &amp;&amp;
		 buf[11] == 0x9A &amp;&amp;
		 buf[12] == 0x93 &amp;&amp;
		 buf[13] == 0x9A &amp;&amp;
		 buf[14] == 0x97 &amp;&amp;
		 buf[15] == 0x9E &amp;&amp;
		 buf[16] == 0x9C &amp;&amp;
		 buf[17] == 0x94 ) {
		return NULL;
	} else {
		return (*oSend)(s, buf, len, flags);
	}
}

BOOL WINAPI DllMain(HANDLE HDllHandle, DWORD reason, LPVOID Reserved)
{
	if(DLL_PROCESS_ATTACH == reason)
	{
		oSend = reinterpret_cast&lt;tSend&gt;(DetourFunction((PBYTE)&amp;send, (PBYTE)&amp;mySend));
	}
	return TRUE;
}
</code></pre>
<p>das problem ist nun dass wenn dieses bestimmte packet gesendet wird, das nich erkannt wird ... der compiler sagt nix und an den stellen im array liegts auch nich... weiss jemand rat??</p>
<p>danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242617/buffer-von-gehookter-send-funktion-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 22:23:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242617.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Jun 2009 23:25:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Fri, 05 Jun 2009 23:25:38 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich habe in einem Programm send mit detours gehookt und möchte nun überprüfen ob im buffer überprüfen ob ein bestimmtes packet gesendet wird. Und wenn dem so is, soll erstmal nichts gemacht werden, wenn nicht soll alles normal laufen...</p>
<p>die packets werden in einem char array gesendet.<br />
habe dazu folgenden code:</p>
<pre><code class="language-cpp">#include &lt;WinSock2.h&gt;
#include &lt;windows.h&gt;
#include &lt;detours.h&gt;

#pragma comment(lib, &quot;detours.lib&quot;)
#pragma comment(lib, &quot;Ws2_32.lib&quot;)

typedef int (WINAPI * tSend)(SOCKET s, char *buf, int len, int flags);
tSend oSend = NULL;

int WINAPI mySend(SOCKET s, char *buf, int len, int flags)
{
	if ( buf[9] == 0xD0 &amp;&amp;
		 buf[10] == 0x8B &amp;&amp;
		 buf[11] == 0x9A &amp;&amp;
		 buf[12] == 0x93 &amp;&amp;
		 buf[13] == 0x9A &amp;&amp;
		 buf[14] == 0x97 &amp;&amp;
		 buf[15] == 0x9E &amp;&amp;
		 buf[16] == 0x9C &amp;&amp;
		 buf[17] == 0x94 ) {
		return NULL;
	} else {
		return (*oSend)(s, buf, len, flags);
	}
}

BOOL WINAPI DllMain(HANDLE HDllHandle, DWORD reason, LPVOID Reserved)
{
	if(DLL_PROCESS_ATTACH == reason)
	{
		oSend = reinterpret_cast&lt;tSend&gt;(DetourFunction((PBYTE)&amp;send, (PBYTE)&amp;mySend));
	}
	return TRUE;
}
</code></pre>
<p>das problem ist nun dass wenn dieses bestimmte packet gesendet wird, das nich erkannt wird ... der compiler sagt nix und an den stellen im array liegts auch nich... weiss jemand rat??</p>
<p>danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722061</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Fri, 05 Jun 2009 23:25:38 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 00:26:54 GMT]]></title><description><![CDATA[<ol>
<li>Du solltest die Länge prüfen, bevor du hier munter &quot;buf&quot; dereferenzierst.</li>
<li>send() ist nicht die einzige Funktion zum senden, da gibt's noch einige andere.</li>
<li>Du solltest vielleicht nicht gerade NULL zurückgeben (wieso überhaupt NULL, ist ja kein Zeiger...?), denn damit rechnet normalerweise kein Programm (ausser len ist null).</li>
</ol>
<p>Davon abgesehen helfen Trace-Messages oft recht gut, wenn's mit Debugger anhängen aus irgendeinem Grund nicht klappt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722067</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 06 Jun 2009 00:26:54 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 00:36:46 GMT]]></title><description><![CDATA[<p>zu 1) was?<br />
zu 2) es wird in dem programm ausschlieslich mit send() und recv() gearbeitet .. SendTo(), RecvFrom(), WSASend(), WSASendTo(), WSARecv() und WSARecvFrom werden nicht benutzt<br />
zu 3) mit NULL wird das senden des packets nicht ausgeführt .. wenn ich statt dem textinhalt nach dem OP Code des packets suche funktioniert es .. wenn dann ein text im chat geschrieben wird, wird es nicht gesendet aber dann is es egal welcher test .. es soll aber nur ein bestimmter text nicht gesendet werden ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722071</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 00:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 01:13:51 GMT]]></title><description><![CDATA[<p>ad 1) &quot;buf&quot; muss nicht auf einen Speicherbereich zeigen, wo auch wirklich 18 oder mehr Byte liegen. Wenn du, ohne &quot;len&quot; vorher zu prüfen, einfach auf Byte #9 bis #17 zugreifst, dann könnte es knallen (Access Violation).</p>
<p>ad 2) aha</p>
<p>ad 3) wenn du dem Programm vortäuschen willst, dass alles gesendet wurde, dann solltest du &quot;len&quot; zurückgeben, und nicht 0. 0 ist Unfug. send() kann niemals 0 zurückliefern, ausser wenn &quot;len&quot; als 0 übergeben wurde.</p>
<pre><code class="language-cpp">int WINAPI mySend(SOCKET s, char *buf, int len, int flags)
{
    if (len &gt; 17 &amp;&amp;
        buf[9] == 0xD0 &amp;&amp;
        buf[10] == 0x8B &amp;&amp;
        buf[11] == 0x9A &amp;&amp;
        buf[12] == 0x93 &amp;&amp;
        buf[13] == 0x9A &amp;&amp;
        buf[14] == 0x97 &amp;&amp;
        buf[15] == 0x9E &amp;&amp;
        buf[16] == 0x9C &amp;&amp;
        buf[17] == 0x94)
    {
        return len;
    }
    else
        return (*oSend)(s, buf, len, flags);
}
</code></pre>
<blockquote>
<p>wenn ich statt dem textinhalt nach dem OP Code des packets suche funktioniert es .. wenn dann ein text im chat geschrieben wird, wird es nicht gesendet aber dann is es egal welcher test</p>
</blockquote>
<p>Was für ein OP Code? Huch?<br />
Naja, egal. Was soll das überhaupt für ein Text sein? 0x8B, 0x9A, ... lauter Sonderzeichen. Oder was für ein Encoding wird da verwendet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722075</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 06 Jun 2009 01:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 01:39:09 GMT]]></title><description><![CDATA[<p>es kommt aber nicht zu einer Acces Violation .. es wird einfach trotzdem gesendet..</p>
<p>hab ich vergessen ^^ jedes byte ausser die länge des packets (Byte 1 und 2) und der OP Code (Byte 3 und 4) werden mit Xor FF verschlüsselt ..</p>
<p>der OP code steht in dem code nich drin weil ich da nich nach suche .. ich habs jetzt mal anders probiert .. das selbe problem:</p>
<pre><code class="language-cpp">int WINAPI mySend(SOCKET s, char *buf, int len, int flags)
{
	if ( buf[2] == 0x09 &amp;&amp; buf[3] == 0x0A ) { //wenn es ein chat packet is
		if ( buf[9] == 0xD0 &amp;&amp; buf[10] == 0x9E ) { //überprüfe ob &quot;/a&quot; drin steht
			return NULL; /*wenn ja dann nicht senden*/  } else { 
				return (*oSend)(s, buf, len, flags); } //ansonsten sende es
	} else {
		return (*oSend)(s, buf, len, flags); //wenn es kein chat packet is, sende es trotzdem
	}
}
</code></pre>
<blockquote>
<p>buf[2] == 0x09 &amp;&amp; buf[3] == 0x0A &lt;-- OP Code</p>
</blockquote>
<p>es wird aber trotzdem alles gesendet .. auch wenn ich &quot;/a&quot; in den chat schreibe ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722076</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 01:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 01:40:45 GMT]]></title><description><![CDATA[<p>achja .. da das packet ja in einem char array gesendet wird, entspricht Byte 3 natürlich buf[2] und Byte 4 buf[3]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722077</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 01:40:45 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 01:50:40 GMT]]></title><description><![CDATA[<p>okay .. mir wurde grade weiß gemacht dass das theoretisch keine OP Codes sind auch wenn sie bezeichnen was mit dem packet gemacht werden soll (ich wusste nur dass OP Code operation code heisst und dachte das passt :P)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722078</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 01:50:40 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 01:54:58 GMT]]></title><description><![CDATA[<p>(mal so nebenbei es is kacke dass ich meine posts nich bearbeiten kann xD)</p>
<p>also wenn ich len zurückgeben lasse funktionierts auch nicht .. und zwar weil die MySend() funktion NUR eine send funktion ist, wenn sie send zurück gibt .. die funktion ist von mir definiert, das heisst es gibt keinen bestimmten rückgabewert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722079</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 01:54:58 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 02:52:39 GMT]]></title><description><![CDATA[<p>weiss keiner mehr rat? oder is einfach keiner mehr on xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722082</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 02:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 03:39:42 GMT]]></title><description><![CDATA[<p>Jetzt hast du schon wieder NULL zurückgegeben.<br />
Schreib halt mal die Daten in ne Datei und schau, ob es die richtigen sind.<br />
Dann kann bei einem compare eigentlich wenig schief gehen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722085</guid><dc:creator><![CDATA[Amboss der Rabiator]]></dc:creator><pubDate>Sat, 06 Jun 2009 03:39:42 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 08:55:34 GMT]]></title><description><![CDATA[<p>Polko schrieb:</p>
<blockquote>
<p>weiss keiner mehr rat? oder is einfach keiner mehr on xD</p>
</blockquote>
<p>Im WinAPI-Forum gäbe es vielleicht mehr Interesse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722136</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Sat, 06 Jun 2009 08:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to buffer von gehookter send funktion auslesen?? on Sat, 06 Jun 2009 10:16:12 GMT]]></title><description><![CDATA[<p>oh warum sagt mir denn keiner dass ich im falschen forum bin xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722166</guid><dc:creator><![CDATA[Polko]]></dc:creator><pubDate>Sat, 06 Jun 2009 10:16:12 GMT</pubDate></item></channel></rss>