Keylogger bauen



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.





  • Keylogger bauen ist illegal. Tred closed.



  • OT: Nein, das ist nicht illegal, aber natürlich höchst verdächtig



  • Erstmal vielen dank für das BSP.
    Wenn ich es richtig sehe schickt mir eine funktion in der DLL bei jedem Tastendruck die Message 'WM_USER + 2', wobei wParam die gedrückte Taste beinhaltet. Bei einer Standard Windows anwendung sollte ich doch so den Tastendruck abfangen könne:

    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
    	char *msg="  ";
    
    	switch (message) {                
    	case WM_DESTROY:
    		PostQuitMessage (0); 
    		break;
    	case WM_USER + 2:
    		itoa(wParam, msg, 2);
    		MessageBox(0, msg, "Hallo", 0);
    		break;
    	default:                      
    		return DefWindowProc(hwnd, message, wParam, lParam);
    	}
    
    	return 0;
    }
    

    So habe ich die dll gelade:

    hinstDLL = LoadLibrary((LPCTSTR) "hook.dll");
    instkbhook = (inshook)GetProcAddress(hinstDLL, "SetupHook@4");
    (instkbhook)(hwnd);
    

    Ich bin ein paar mal mit dem debugger durchgegangen. Es wird alles korrekt ausgeführt. Nur ich bekomme keine Messagebox zu sehen wenn ich text in der IDE eingebe...

    Die unhook funktion setze ich am besten bei WM DESTROY.
    Wenn die Funktion aus der dll so definiert ist:
    typedef BOOL (WINAPI *delhook)(void);
    warum kann ich sie dann so nicht aufrufen?
    (delhook)(void);

    Hier ist das gesamte Projekt für den MinGW (Gcc) Kompiler:
    http://www.gwebspace.de/myspace871/KL.zip



  • ---------- schrieb:

    Ich bin ein paar mal mit dem debugger durchgegangen. Es wird alles korrekt ausgeführt. Nur ich bekomme keine Messagebox zu sehen wenn ich text in der IDE eingebe...

    in wm_user+2 wird hineingesprungen?

    ---------- schrieb:

    Die unhook funktion setze ich am besten bei WM DESTROY.
    Wenn die Funktion aus der dll so definiert ist:
    typedef BOOL (WINAPI *delhook)(void);
    warum kann ich sie dann so nicht aufrufen?
    (delhook)(void);

    hast du die adresse der funktion aus der dll geholt? ist diese gültig?



  • miller_m schrieb:

    in wm_user+2 wird hineingesprungen?

    Die Messagebox erscheint nicht... es wird nicht hineingesprungen.

    miller_m schrieb:

    hast du die adresse der funktion aus der dll geholt? ist diese gültig?

    Die Funktionspointer sind gültig.

    Wie sieht der Funktionspointer zu dieser Funktion aus:
    EXPORT BOOL CALLBACK UninstallHook (void) {}

    Wenn ich es so mache:
    typedef BOOL (WINAPI *delhook)(void);

    kann ich ihn so nicht aufrufen:
    (delkbhook)();



  • Das mit der Funktionsdefinition hat sich erledigt (habe ebend zu schnell absenden gedrückt).

    Aber ich empfange nicht die Message wm_user+2



  • LRESULT CALLBACK KeyboardHookProc (int nCode, WPARAM wParam, LPARAM lParam){
        if (nCode == HC_ACTION){
            if ((lParam & 1073741824) != 1073741824){
    		MessageBox(0, "1", "", 0);
                SendMessage ((HWND) hWindow, (WM_USER + 2), (WPARAM) wParam, (LPARAM) lParam) ;
    		MessageBox(0, "2", "", 0);
            }
        }
    
    	 MessageBox(0, "3", "", 0);
        return CallNextHookEx (hhkHook, nCode, wParam, lParam) ;
    }
    

    Warum wird bei diesem Code niemals die MEssagebox mit der 2 angezeigt? (Der Code ist aus der Vorlage)



  • das hatte ich auch schon mal das problem mit dem code weiss aber nicht mehr was das war. irgendwas komisches war auch mit der CALLBACK definition der funktionen aber ich glaub das hatte damit nix zu tun


Anmelden zum Antworten