Hookdll - Tastatureingaben übergeben



  • Mr. Carrison schrieb:

    Der Keylogger ist übrigens nur für unser Heimnetzwerk gedacht - also kein Grund zur Sorge 👍

    Dann bin ich ja beruhigt 🤡



  • Hi Flenders!
    Kannst du mir noch einmal weiterhelfen?
    Wie kann ich die DLL-Datei in mein Projekt einbinden, ohne sie als
    wirkliche Datei abzuspeichern? Benutze zur Zeit "LibMain" in der DLL 😕



  • Mr. Carrison schrieb:

    Wie kann ich die DLL-Datei in mein Projekt einbinden, ohne sie als wirkliche Datei abzuspeichern? Benutze zur Zeit "LibMain" in der DLL 😕

    Ich verstehe irgendwie nicht so ganz, was du vorhast 🙄 - btw: ich hab noch nie eine eigene DLL geschrieben 😉



  • OK das Problem hat sich erledigt (falsch verstanden 🙄)
    Ich frage mich nur, warum keine Meldung beim Drücken einer Taste ausgegeben wird 😞 :

    #include <windows.h>
    #include "hookdll.h"
    
    #pragma data_seg ("Shared") 
    HWND hWindow = 0 ; 
    #pragma data_seg () 
    #pragma comment (linker, "/section:Shared,RWS") 
    
    LRESULT CALLBACK KeyboardHookProc (int, WPARAM, LPARAM) ; 
    
    HHOOK       hhkHook ; 
    HINSTANCE   hDllInstance ; 
    
    int APIENTRY DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved){ 
        switch (fdwReason){ 
            case DLL_PROCESS_ATTACH : 
                hDllInstance = hInstance ; 
                break ; 
        }   
        return TRUE ; 
    } 
    
    EXPORT BOOL CALLBACK SetupHook (/*HWND hParent*/){ 
        //hWindow = hParent ; 
        hhkHook = SetWindowsHookEx (WH_KEYBOARD, KeyboardHookProc, hDllInstance, NULL) ; 
        return TRUE ; 
    } 
    
    LRESULT CALLBACK KeyboardHookProc (int nCode, WPARAM wParam, LPARAM lParam){
    	MessageBox(NULL, "Taste", "Taste", MB_OK);
        if (nCode == HC_ACTION){ 
            if ((lParam & 1073741824) != 1073741824){
    			MessageBox(NULL, "Taste gedrückt", "Taste gedrückt", MB_OK);
            } 
        }
    	hhkHook = SetWindowsHookEx (WH_KEYBOARD, KeyboardHookProc, hDllInstance, NULL) ;
        return CallNextHookEx (hhkHook, nCode, wParam, lParam) ; 
    } 
    
    EXPORT BOOL CALLBACK UninstallHook (void){ 
        UnhookWindowsHookEx (hhkHook) ; 
        return TRUE ; 
    }
    
    // hookdll.h:
    #define EXPORT __declspec (dllexport)
    #define IMPORT __declspec (dllimport)
    
    EXPORT BOOL CALLBACK SetupHook(/*HWND*/); 
    EXPORT BOOL CALLBACK UninstallHook(void);
    


  • Du hast den Hook aber schon mit SetupHook eingerichtet, oder?! 🙂



  • Klar! Hab das Problem jetzt auch gefunden - lag nämlich an einem anderen Teil
    meines Codes 🙂

    Gibt es eigentlich eine Möglichkeit, den Inhalt des wParams (oder lParams) in einer MessageBox auszugeben?

    THX



  • Du musst den Inhalt halt selbst erst entsprechend formatieren, wenn du ein sinvolles Ergebnis haben willst 😉



  • Wie kann ich den Inhalt denn am besten formatieren?
    Sorry für die dumme Frage, aber ich bin halt noch ein kleiner Anfänger 🙄



  • hey, ich krieg das irgendwie nicht hin 😞
    kannst du Mr. Carisson, bitte mal deine mainfuntion posten, wäre dir echt voll dankbar, ich hoffe ich werde dadurch mehr verstehen :|
    bitte, helf mir 👍



  • @Mr. Carisson: wParam und lParam haben je nach Message völlig unterschiedliche Bedeutungen, so allgemein geht das nicht 😉



  • Nö. wParam ist immer der virtual key code.



  • Achso, hatte das irgendwie allgemein verstanden 🙄

    Vielleicht MapVirtualKey oder To Ascii 😕



  • Wie kann ich wParam denn mit MapVirtualKey "auswerten" und das Ergebnis in eine Variable schreiben? Oder aktzeptiert die Funktion MapVirtualKey schon Variablen vom Typ WPARAM 😕

    PS: Übriegns vielen Dank für die ganzen Antworten! Wenn ich fertig bin, poste ich mal den gesamten Code meines Keyloggers 🙂 🙄



  • Keine Ahnung, ob das so korrekt ist, aber er zeigt zumindest mal etwas vernünftiges an:

    char str[3] = {0};
    //BYTE keyStates[256];
    //GetKeyboardState(keyStates);
    //ToAscii(wParam,lParam,keyStates,(unsigned short *)str,0);
    MapVirtualKey(wParam,2);
    MessageBox(NULL,str,"",0);
    

    Aber müsste es nicht eigentlich auch möglich sein direkt (so wie bei WM_CHAR) das Zeichen zu bekommen 🙄



  • danke @Mr. Carisson, währe echt voll nett ^^..


Anmelden zum Antworten