<?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[Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich muss einen einfachen (Ohne selber Treiber schreiben) Weg finden, um ein Netzwerkpaket bestimmter Größe noch bevor es ein Programm erreicht, zu verwerfen.</p>
<p>Könnt ihr mir dabei helfen? Ich weiß nicht, wie ich vorgehen soll.</p>
<p>Danke!<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206720/verhindern-dass-ein-netzwerkpaket-mit-bestimmter-größe-ein-programm-erreicht</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 01:03:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206720.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 28 Feb 2008 01:43:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 01:43:33 GMT]]></title><description><![CDATA[<p>Hey!</p>
<p>Ich muss einen einfachen (Ohne selber Treiber schreiben) Weg finden, um ein Netzwerkpaket bestimmter Größe noch bevor es ein Programm erreicht, zu verwerfen.</p>
<p>Könnt ihr mir dabei helfen? Ich weiß nicht, wie ich vorgehen soll.</p>
<p>Danke!<br />
MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464487</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464487</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Thu, 28 Feb 2008 01:43:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 06:00:52 GMT]]></title><description><![CDATA[<p>Netzwerkkabel ziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464498</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 28 Feb 2008 06:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 08:24:57 GMT]]></title><description><![CDATA[<p>Jochen Kalmbach schrieb:</p>
<blockquote>
<p>Netzwerkkabel ziehen.</p>
</blockquote>
<p>seit wann trollst du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464535</guid><dc:creator><![CDATA[Fake Oder Echt@work]]></dc:creator><pubDate>Thu, 28 Feb 2008 08:24:57 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 08:40:22 GMT]]></title><description><![CDATA[<p>Ich hätte eher die Frage als &quot;Trolling&quot; bezeichnet... Wenn er kein Filter-Triber schreiben will, dann ist es sehr schwer... ok er könnte in den Prozess eine DLL-Injekten und die APIs Hooken...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464546</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 28 Feb 2008 08:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 08:48:10 GMT]]></title><description><![CDATA[<p>unter Windows geht das nicht ohne weiteres, soweit ich weiß.<br />
Es gibt aber Winpcap, womit man Pakete mitsniffen kann. Ob man sie auch vorzeitig verarbeiten kann, weiß ich nicht, aber ich denke schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464550</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Thu, 28 Feb 2008 08:48:10 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 12:34:57 GMT]]></title><description><![CDATA[<p>Kein Troll bin <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>
<p>1.) Per API hook komm ich nicht weiter. Das Programm ist ein Server, zu dem mehrere Clients verbunden sind. Kommt nun das besagte Paket per WSARecvFrom() als &quot;overlapped I/O&quot; an, sendet der Server sofort eine Reaktion an alle Clienten, noch bevor ich reagieren kann. Genau das möchte ich verhindern.<br />
Hab schon probiert, das Paket in &quot;WSAGetOverlappedResult&quot; auf 0 zu setzen, aber es bringt nichts <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="😞"
    /> Soll ich mal code posten?</p>
<p>2.) Ohne Treiber schreiben sehr schwer? Aber wie, außer durch API hooking, bei dem ich nicht weiterkomme, weil ich auch die Serverprogramm-Mechanik nicht wirklich kenne... ?</p>
<p>3.) Per WinPCap kann man keine Pakete verwerfen, zumal ich es gerne lösen möchte, ohne dass der User extra Treiber installieren muss...</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464694</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Thu, 28 Feb 2008 12:34:57 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 12:37:59 GMT]]></title><description><![CDATA[<p>Wenn Du den Source des Servers nicht hast und kein Hooking kannst (warum nicht &quot;WSARecvFrom&quot; hooken) und keinen Treiber schreiben willst, musst Du halt wirklich das Netzwerkkabel ziehen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1464696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1464696</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 28 Feb 2008 12:37:59 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Thu, 28 Feb 2008 21:01:03 GMT]]></title><description><![CDATA[<p>Nimm einen Router dessen Firmware Open-Source ist (z.B. irgendwas was mit der Tomato Firmware geht), und hack das in die Router Firmware rein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1465099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1465099</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 28 Feb 2008 21:01:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Fri, 29 Feb 2008 22:47:50 GMT]]></title><description><![CDATA[<p>Es soll ein Admin-Tool werden, daher nix mit Router-Firmware verändern.<br />
Hab es doch schon mit hooking probiert, geht aber nicht...</p>
<pre><code class="language-cpp">#define WIN32_LEAN_AND_MEAN
#include &lt;windows.h&gt;
#include &lt;detours.h&gt;
#include &lt;winsock2.h&gt;
#include &lt;map&gt;
using namespace std;

DETOUR_TRAMPOLINE(int WINAPI real_WSARecvFrom(SOCKET s, LPWSABUF lpBuffer, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, sockaddr* lpFrom, int lpFromLen, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine), WSARecvFrom);
DETOUR_TRAMPOLINE(BOOL WSAAPI real_WSAGetOverlappedResult(SOCKET s, LPWSAOVERLAPPED lpOverlapped, LPDWORD lpcbTransfer, BOOL fWait, LPDWORD lpdwFlags), WSAGetOverlappedResult);
int WINAPI custom_WSARecvFrom(SOCKET s, LPWSABUF lpBuffer, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, sockaddr* lpFrom, int lpFromLen, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
BOOL WSAAPI custom_WSAGetOverlappedResult(SOCKET s, LPWSAOVERLAPPED lpOverlapped, LPDWORD lpcbTransfer, BOOL fWait, LPDWORD lpdwFlags);

map&lt;LPWSAOVERLAPPED, LPWSABUF&gt; queue;
map&lt;LPWSAOVERLAPPED, LPWSABUF&gt;::iterator queueIterator;

BOOL WINAPI DllMain(HANDLE, DWORD reason, LPVOID)
{
    if(reason == DLL_PROCESS_ATTACH)
	{
        DetourFunctionWithTrampoline((PBYTE)real_WSARecvFrom, (PBYTE)custom_WSARecvFrom);
		DetourFunctionWithTrampoline((PBYTE)real_WSAGetOverlappedResult, (PBYTE)custom_WSAGetOverlappedResult);
	}
    else if(reason == DLL_PROCESS_DETACH)
	{
        DetourRemove((PBYTE)real_WSARecvFrom, (PBYTE)custom_WSARecvFrom);
		DetourRemove((PBYTE)real_WSAGetOverlappedResult, (PBYTE)custom_WSAGetOverlappedResult);
	}

    return true;
}

int WINAPI custom_WSARecvFrom(SOCKET s, LPWSABUF lpBuffer, DWORD dwBufferCount, LPDWORD lpNumberOfBytesRecvd, LPDWORD lpFlags, sockaddr* lpFrom, int lpFromLen, LPWSAOVERLAPPED lpOverlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)
{
	int ret = real_WSARecvFrom(s, lpBuffer, dwBufferCount, lpNumberOfBytesRecvd, lpFlags, lpFrom, lpFromLen, lpOverlapped, lpCompletionRoutine);

	// If the operation completes immediately
	if(!ret)
	{
		// If it is the target packet, set it to 0
		if(*lpNumberOfBytesRecvd == 80)
			memset(lpBuffer-&gt;buf, 0, *lpNumberOfBytesRecvd);
	}
	// Else, save the indication to process in WSAGetOverlappedResult
	else
		queue.insert(pair&lt;LPWSAOVERLAPPED, LPWSABUF&gt;(lpOverlapped, lpBuffer));

    return ret;
}

BOOL WSAAPI custom_WSAGetOverlappedResult(SOCKET s, LPWSAOVERLAPPED lpOverlapped, LPDWORD lpcbTransfer, BOOL fWait, LPDWORD lpdwFlags)
{
	BOOL ret = real_WSAGetOverlappedResult(s, lpOverlapped, lpcbTransfer, fWait, lpdwFlags);

	// I/O operation completed
	if(ret)
	{
		// Find the related buffer
		queueIterator = queue.find(lpOverlapped);
		if(queueIterator != queue.end())
		{
			// If it is the target packet, set it to 0
			if(*lpcbTransfer == 80)
				memset(queueIterator-&gt;second-&gt;buf, 0, *lpcbTransfer);

			queue.erase(queueIterator);
		}
	}

    return ret;
}
</code></pre>
<p>Funktioniert nicht. Der Server reagiert trotzdem auf das Paket, obwohl ich es doch auf 0 setze, bevor der Server mitbekommt dass der Puffer gefüllt wurde.<br />
(Anmerkung: lpBuffer zeigt immer nur auf einen Puffer, hab das sehr lange beobachtet. Weiters wird sehr wohl memset ausgeführt, jedoch arbeitet der Server wie gewohnt weiter)</p>
<p>Ich versteh nicht, wie der Server einfach wie normal weiter funktioniert, obwohl ich die einkommenden Pakete auf 0 setze.</p>
<p>SOGAR, wenn ich ALLE einkommenden Pakete auf 0 setze, tritt nur ein kurzer lag auf und danach geht wieder alles normal weiter...</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1465854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1465854</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Fri, 29 Feb 2008 22:47:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Fri, 29 Feb 2008 22:54:40 GMT]]></title><description><![CDATA[<p>kann es sein, dass der server keine empfangsbestätigung bekommt und dann eben noch mal alles schickt? weil normalerweise kommt ja auch was zurück beim senden, ob es nun ein socket geschloßen oder pakete erfolgreich verschickt ist, oder irre ich mich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1465856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1465856</guid><dc:creator><![CDATA[Fake oder Echt]]></dc:creator><pubDate>Fri, 29 Feb 2008 22:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to Verhindern, dass ein Netzwerkpaket mit bestimmter Größe ein Programm erreicht on Sat, 01 Mar 2008 11:37:27 GMT]]></title><description><![CDATA[<p>Aber warum reagiert er trotzdem auf neue Daten? Man kann ganz normal weiterspielen, nach einem kurzen lag...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1465984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1465984</guid><dc:creator><![CDATA[ceplusplus@loggedoff]]></dc:creator><pubDate>Sat, 01 Mar 2008 11:37:27 GMT</pubDate></item></channel></rss>