<?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[WinApi hooken?]]></title><description><![CDATA[<p>Hiho Community!</p>
<p>Wie kann ich WinApi Funktionen &quot;blocken&quot;? Ich möchte z.b., dass die Funktion keybd_event() nicht auf meine Anwendung ausführbar ist. Ich kenne Programme die können das. Angeblich hooken sie Winapi calls und vereiteiln diese.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230947/winapi-hooken</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 14:39:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230947.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Jan 2009 14:55:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 14:55:19 GMT]]></title><description><![CDATA[<p>Hiho Community!</p>
<p>Wie kann ich WinApi Funktionen &quot;blocken&quot;? Ich möchte z.b., dass die Funktion keybd_event() nicht auf meine Anwendung ausführbar ist. Ich kenne Programme die können das. Angeblich hooken sie Winapi calls und vereiteiln diese.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639285</guid><dc:creator><![CDATA[Tobi5]]></dc:creator><pubDate>Sun, 04 Jan 2009 14:55:19 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 16:03:13 GMT]]></title><description><![CDATA[<p>viele winapi-hooking-threads in letzter zeit <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="😛"
    /></p>
<p>grob beschrieben:</p>
<p>-zielprozess öffnen<br />
-code einschleusen der<br />
-die addresse der funktion herrausfindet<br />
-eigene funktion in den prozess injizieren<br />
-ersten 5 bytes der funktion überschreiben (am besten auch irgentwo speichern)<br />
mit einem far-jump zu der addresse (0xE9 xx xx xx xx (x = offset deiner funktion))<br />
-fertig <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>
<p>google mal nach</p>
<p>FindWindow<br />
GetWindowThreadProzessId<br />
OpenProzess<br />
virtualAllocEx<br />
WriteProzessMemory<br />
CreateRemoteThread</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639329</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sun, 04 Jan 2009 16:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 16:04:50 GMT]]></title><description><![CDATA[<p>profilier dich hier nicht helferlein. wenn er so eine frage noch stellen muss, kriegt er es doch eh nicht hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639330</guid><dc:creator><![CDATA[Zierlich]]></dc:creator><pubDate>Sun, 04 Jan 2009 16:04:50 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 16:11:31 GMT]]></title><description><![CDATA[<p>vielen Dank helferlein! Ich bin echt von deinem Wissen beindruckt.<br />
das Problem ist jetzt, woher soll mal vorher wissen welchen Prozess man öffnen muss bzw. welcher Prozess schädliche WinApi calls machen würde?<br />
Oder muss man dass dann in jeden Prozess machen der da ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639335</guid><dc:creator><![CDATA[Tobi5]]></dc:creator><pubDate>Sun, 04 Jan 2009 16:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 16:12:26 GMT]]></title><description><![CDATA[<p>ja aber wozu soll das gut sein. ich sehe keinen sinnvollen grund soetwas zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639336</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sun, 04 Jan 2009 16:12:26 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 16:40:59 GMT]]></title><description><![CDATA[<blockquote>
<p>ja aber wozu soll das gut sein. ich sehe keinen sinnvollen grund soetwas zu tun.</p>
</blockquote>
<p>hey wer klaut da mein nickname <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>Tobi5 schrieb:</p>
<blockquote>
<p>das Problem ist jetzt, woher soll mal vorher wissen welchen Prozess man öffnen muss bzw. welcher Prozess schädliche WinApi calls machen würde?<br />
Oder muss man dass dann in jeden Prozess machen der da ist?</p>
</blockquote>
<p>eigentlich musst du jeden prozess infizieren, der diese funktion auf dein programm<br />
aufrufen könnte.<br />
kannst ja eine tabelle mit &quot;harmlosen&quot; prozessen anlegen z.b. explorer.exe oder<br />
winlogon.exe</p>
<p>alles andere wird infiziert <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="😃"
    /> (guck mal <a href="http://msdn.microsoft.com/en-us/library/ms686701(VS.85).aspx" rel="nofollow">hier</a> für ein beispiel)</p>
<p>warum soll ers nicht hinkriegen nur weil er danach fragt?<br />
so kann man das nie lernen, fragen ist gut !</p>
<p>da gibbet auchnoch einen guten <a href="http://wiki.hackerboard.de/index.php/Windows_API" rel="nofollow">Artikel</a> in dem die grundlagen gut beschrieben sind.</p>
<p>MfG helferlein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639358</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sun, 04 Jan 2009 16:40:59 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 17:25:50 GMT]]></title><description><![CDATA[<p>ok thx <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="🙂"
    /><br />
gibt es eigentlich auch eine möglichkeit sich davor zu schützen?<br />
Ich meine dann könnte man ja jedes Programm flachlegen. Wenn ja wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639391</guid><dc:creator><![CDATA[Tobi5]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:25:50 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 17:36:19 GMT]]></title><description><![CDATA[<p>das ganze klappt nicht bei jedem prozess und als nicht-admin bei nochweniger.</p>
<p>schützen kannst du dich in dem du jede! funktion der api vor dem aufruf<br />
auf einen sprung überprüfst, der ja mit dem opcode 0xE9 anfängt.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
bool isFuncOk(T funcptr)
{
    char *addr = reinterpret_cast&lt;char *&gt;(funcptr);
    return *addr != 0xE9;
}
</code></pre>
<p>gibt aber bestimmt noch andere sprünge außer far-call die das selbe ermöglichen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639398</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:36:19 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 17:41:15 GMT]]></title><description><![CDATA[<p>und falls es herausfindet, dass es die Funktion nicht ok ist(gehookt ist) wie kann ich das bypassen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639402</guid><dc:creator><![CDATA[Tobi5]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:41:15 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 17:50:22 GMT]]></title><description><![CDATA[<p>oh man denk doch mal nach!<br />
Wenn die ersten 5 Bytes überschrieben wurden,<br />
dann führe diese manuell aus und springe dann zu dem Funktion Offset + 5 Bytes.<br />
Du öffnest also Olly und suchst nach der WinApi Funktion in den DLLs.<br />
Nimm die ersten 5 Bytes kopiere sie in dein Programm (Inline Asm) und mach nen jump hin zu der Funktion +5 bytes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639404</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 04 Jan 2009 17:50:22 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 18:06:30 GMT]]></title><description><![CDATA[<p>ich verstehe nur bahnhof</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639416</guid><dc:creator><![CDATA[Tobi5]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 18:19:10 GMT]]></title><description><![CDATA[<p>helferlein schrieb:</p>
<blockquote>
<p>das ganze klappt nicht bei jedem prozess und als nicht-admin bei nochweniger.</p>
<p>schützen kannst du dich in dem du jede! funktion der api vor dem aufruf<br />
auf einen sprung überprüfst, der ja mit dem opcode 0xE9 anfängt.</p>
<pre><code class="language-cpp">template &lt;class T&gt;
bool isFuncOk(T funcptr)
{
    char *addr = reinterpret_cast&lt;char *&gt;(funcptr);
    return *addr != 0xE9;
}
</code></pre>
<p>gibt aber bestimmt noch andere sprünge außer far-call die das selbe ermöglichen</p>
</blockquote>
<p>das ist doch quartsch es gibt jawoll viele möglichleiten api hooking zu betrieben stichwort IAT und viele andere</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639431</guid><dc:creator><![CDATA[Klempfner]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 18:32:52 GMT]]></title><description><![CDATA[<p>ganz einfach:</p>
<p>die ersten 5 byte der funktion wurde überschrieben und durch einen farcall<br />
ersetzt, also dem opcode für den sprung an deine eigene funktion.</p>
<p>sämtliche funktionen der winapi nutzen die <a href="http://de.wikipedia.org/wiki/Aufrufkonvention#stdcall" rel="nofollow">stdcall</a> aufrufkonvention. diese<br />
funktionen beginnen aufgrund der konvention immer mit den selben 5 bytes.</p>
<p>push ebp<br />
mov ebp, esp<br />
sub esp, xx</p>
<p>(xx steht für die größe aller lokalen variablen)</p>
<p>diese wurden überschrieben. um die funktion dennoch aufrufen zu können,<br />
muss man diese selber ausführen, z.b. mit inline-assembler</p>
<pre><code class="language-cpp">__declspec(naked) DWORD callfunc(void * func) // verhindert dass der kompiler den funktionsprolog hinzufügt
{
    char *addr = reinterpret_cast&lt;char *&gt;(func) + 5; // 5 bytes weiter
    __asm
    {
        mov ebx, addr // hier speichern wir die addresse
        push ebp
        mov ebp, esp
        sub esp, xx // !!
        jmp ebx
    }
}
</code></pre>
<p>hier haben wir allerdings ein problem, denn wir wissen nicht wieviele variablen<br />
die funktion auf den stack legt.</p>
<p>wenn wir zuwenig nehmen überschreiben wir die rücksprungaddresse und den framepointer.<br />
wenn wir zuviel nehmen, <strong>kann</strong> es sein dass das selbe problem auftrifft,<br />
es kann aber auch sein, dass der wert von ebp genommen wird statt die selbe<br />
größe wieder auf den esp zu addieren. hier weiß ich nicht genau wie die<br />
winapi das macht, ich befürchte beide versionen gibt es.</p>
<p>lässt sich bestimmt auch lösen, aber dazu müsste man die funktion<br />
disassemblieren und ....</p>
<p>aber ich weiß nicht ob dir das viel bringt, da du die grundlagen verstanden<br />
haben musst. was dein letzer post nur bestätigt.</p>
<p>guck dir mal die links an und versuch alles zu verstehen.</p>
<p>edit:</p>
<p>klempfner schrieb:</p>
<blockquote>
<p>es gibt jawoll viele möglichleiten api hooking zu betrieben stichwort IAT und viele andere</p>
</blockquote>
<p>es war nur ein beispiel. natürlich gibt es noch viele andere möglichkeiten <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/1639442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639442</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Sun, 04 Jan 2009 18:32:52 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 21:48:32 GMT]]></title><description><![CDATA[<p>helferlein schrieb:</p>
<blockquote>
<p>sämtliche funktionen der winapi nutzen die <a href="http://de.wikipedia.org/wiki/Aufrufkonvention#stdcall" rel="nofollow">stdcall</a> aufrufkonvention. diese<br />
funktionen beginnen aufgrund der konvention immer mit den selben 5 bytes.</p>
<p>push ebp<br />
mov ebp, esp<br />
sub esp, xx</p>
<p>(xx steht für die größe aller lokalen variablen)</p>
</blockquote>
<p>Aber dann hät ich da mal ne Frage:</p>
<p>Warum hat dann z.B. FindNextFileW diese ersten 12Bytes:</p>
<pre><code>6A 2C             PUSH 2C
68 C8F0807C       PUSH kernel32.7C80F0C8
E8 0035FFFF       CALL kernel32.7C8024D6
</code></pre>
<p>Zumindestens laut Olly?</p>
<p>Gruß Pingu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639509</guid><dc:creator><![CDATA[Pingu-Group]]></dc:creator><pubDate>Sun, 04 Jan 2009 21:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 22:06:13 GMT]]></title><description><![CDATA[<p>weil's nur'n stub is <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639519</guid><dc:creator><![CDATA[Firesource]]></dc:creator><pubDate>Sun, 04 Jan 2009 22:06:13 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 22:18:30 GMT]]></title><description><![CDATA[<p>nehmen wir mal an es handelt sich um SetCurserPos</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

using namespace std;

BOOL WINAPI __stdcall SetCursorPosA(int x, int y);
DWORD DLLFunc;

int main()
{
	Sleep(2000);
	HINSTANCE hInst = LoadLibrary(TEXT(&quot;user32.dll&quot;));
    DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;) + 5;  
	bool somebool = SetCursorPosA(0, 0);

	return 0;
}

BOOL WINAPI __stdcall SetCursorPosA(int x, int y)
{
   __asm
   {
      mov  edi, edi
      push ebp
      mov  ebp, esp
      jmp [DLLFunc]
   }
}
</code></pre>
<p>Warum crashed das programm?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639527</guid><dc:creator><![CDATA[tester312]]></dc:creator><pubDate>Sun, 04 Jan 2009 22:18:30 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 23:04:54 GMT]]></title><description><![CDATA[<p>tester312 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">BOOL WINAPI __stdcall SetCursorPosA(int x, int y)
{
   __asm
   {
      mov  edi, edi
      push ebp
      mov  ebp, esp
      jmp [DLLFunc]
   }
}
</code></pre>
<p>Warum crashed das programm?</p>
</blockquote>
<p>Hi,<br />
ich würd behaupten das, dass Problem is das du bei jmp ein Offset angeben musst und nicht die Adresse die du z.B. von GetProcAddress() bekommts.<br />
Und das Offset wäre: <strong>Ziel-Absprung</strong>.<br />
Desweiteren wird doch ,wenn du das so machst, der Prolog deiner Funktion + der Prolog von SetCursorPos aufgerufen. Das sollte au nicht so gut sein.<br />
Schreib lieber statt:</p>
<pre><code class="language-cpp">BOOL WINAPI __stdcall SetCursorPosA(int x, int y)
</code></pre>
<p>was zumal sowieso komisch is da ja WINAPI nur ein #define für __stdcall ist,</p>
<pre><code class="language-cpp">BOOL __declspec(naked) SetCursorPosA(int x, int y)
</code></pre>
<p>Somit haste kein Prolog und es sollte funktionieren.</p>
<p>Gruß Pingu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639551</guid><dc:creator><![CDATA[Pingu-Group]]></dc:creator><pubDate>Sun, 04 Jan 2009 23:04:54 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 23:26:46 GMT]]></title><description><![CDATA[<p>'SetCursorPosA': 'naked' kann nur auf nicht-Memberfunktionsdefinitionen angewendet werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639557</guid><dc:creator><![CDATA[tester312]]></dc:creator><pubDate>Sun, 04 Jan 2009 23:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 23:37:11 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &lt;iostream&gt;

using namespace std;

DWORD DLLFunc;
BOOL __declspec(naked) SetCursorPosA(int x, int y)
{
    __asm
   {
      mov  edi, edi
      push ebp
      mov  ebp, esp
      jmp [DLLFunc]
   }
}

int main()
{
	Sleep(2000);
	HINSTANCE hInst = LoadLibrary(TEXT(&quot;user32.dll&quot;));
    DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;) + 5;  
	SetCursorPosA(0, 0);

	return 0;
}
</code></pre>
<p>Es funktioniert jetzt, die Funktion wird ausgeführt, aber danach Crashed das Programm noch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639562</guid><dc:creator><![CDATA[tester312]]></dc:creator><pubDate>Sun, 04 Jan 2009 23:37:11 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Sun, 04 Jan 2009 23:57:44 GMT]]></title><description><![CDATA[<p>Pingu-Group schrieb:</p>
<blockquote>
<p>ich würd behaupten das, dass Problem is das du bei jmp ein Offset angeben musst und nicht die Adresse die du z.B. von GetProcAddress() bekommts.<br />
Und das Offset wäre: <strong>Ziel-Absprung</strong>.</p>
</blockquote>
<p>!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639569</guid><dc:creator><![CDATA[Pingu-Group]]></dc:creator><pubDate>Sun, 04 Jan 2009 23:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Mon, 05 Jan 2009 00:12:21 GMT]]></title><description><![CDATA[<p>was meinst du mit Ziel- Absprung? Ich verstehe nicht ganz was gemeint ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639572</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639572</guid><dc:creator><![CDATA[tester312]]></dc:creator><pubDate>Mon, 05 Jan 2009 00:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Mon, 05 Jan 2009 00:26:04 GMT]]></title><description><![CDATA[<p>tester312 schrieb:</p>
<blockquote>
<p>was meinst du mit Ziel- Absprung? Ich verstehe nicht ganz was gemeint ist</p>
</blockquote>
<pre><code class="language-asm">00411113 /E9 D8060000       JMP muh.mainCRTStartup //dieser Jump springt von 0x00411113 nach 0x004117F0 und nicht nach D8060000
....
004117F0 \8BFF              MOV EDI,EDI
</code></pre>
<p>Sprich:<br />
<strong>Offset = Ziel - Absprung</strong></p>
<p>Also musst du das Offset angeben das im &quot;Little-Endian-Format&quot; angegeben ist, was ich auch erst vor ein paar Tagen erfahren hab ;).</p>
<p>Gruß Pingu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639577</guid><dc:creator><![CDATA[Pingu-Group]]></dc:creator><pubDate>Mon, 05 Jan 2009 00:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Mon, 05 Jan 2009 00:30:48 GMT]]></title><description><![CDATA[<p>danke, ich verstehe wo das Problem liegt aber<br />
Offset = Ziel - Absprung<br />
Ziel = DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;) + 5;<br />
Absprung = DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;);<br />
Offset = DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;) + 5; - DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;);<br />
ich denke nicht, dass das so gemeint war?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639579</guid><dc:creator><![CDATA[tester312]]></dc:creator><pubDate>Mon, 05 Jan 2009 00:30:48 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Mon, 05 Jan 2009 00:46:06 GMT]]></title><description><![CDATA[<p>tester312 schrieb:</p>
<blockquote>
<p>danke, ich verstehe wo das Problem liegt aber<br />
Offset = Ziel - Absprung<br />
Ziel = DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;) + 5;<br />
Absprung = DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;);<br />
Offset = DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;) + 5; - DLLFunc = (DWORD)GetProcAddress(hInst, &quot;SetCursorPos&quot;);<br />
ich denke nicht, dass das so gemeint war?</p>
</blockquote>
<p>Noe nicht ganz.<br />
Also Ziel ist korrekt, aber Absprung ist ja:<br />
SetCursorPosA + länge der Opcodes bist jmp [DLLFunc] + 5 für die länge des Opcodes jmp</p>
<p>Deswegen is bei meinem Bspl.</p>
<h1>Ziel: 004117F0<br />
Absprung: 00411118</h1>
<p>Offset: D8060000 //Little Endian</p>
<p>Wenn nicht klar dann schau mal den Thread hier an:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-230718.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-230718.html</a></p>
<p>Gruß Pingu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639586</guid><dc:creator><![CDATA[Pingu-Group]]></dc:creator><pubDate>Mon, 05 Jan 2009 00:46:06 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Mon, 05 Jan 2009 00:56:43 GMT]]></title><description><![CDATA[<p>SetCursorPosA + länge der Opcodes bist jmp [DLLFunc] + 5 für die länge des Opcodes jmp</p>
<p>Absprung = (DWORD)GetProcAddress(hInst, &quot;SetCursorPosA&quot;) + opcodes + 5</p>
<p>was sind die länge der Opcodes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639590</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639590</guid><dc:creator><![CDATA[tester312]]></dc:creator><pubDate>Mon, 05 Jan 2009 00:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to WinApi hooken? on Mon, 05 Jan 2009 01:03:31 GMT]]></title><description><![CDATA[<p>Also entweder kannste ned lesen oder du verstehst due Grundlagen nicht!?</p>
<p>In beiden Fällen rate ich dir lass es einfach!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1639594</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1639594</guid><dc:creator><![CDATA[Pingu-Group]]></dc:creator><pubDate>Mon, 05 Jan 2009 01:03:31 GMT</pubDate></item></channel></rss>