Keyboardhook



  • Dann hooke doch einfach die MessageProc Funktion.



  • rofl, ihr mit euren bekloppten hooks. ich mach dir jetzt mal nen vorschlag, sag uns was du übehaupt erreichen willst und ich wette wir können dir nen besseren weg sagen als immer gleich sofort mit kanonen auf spatzen zu schießen.



  • Er programmiert Cheats (Vermutung wegen Signatur..). Was willst du da bitte anderes tun?



  • es geht einfach nur dadrum, dass ich gerne einen Hotkey hätte um etwas an- bzw. auszustellen. Prinzipiell könnte ich das einfach so machen:

    while(true)
    {
        if(GetAsyncKeyState(VK_F1)&1)
            tu_dies();
    }
    

    Allerdings bin ich nicht gerade ein Fan von GetAsyncKeyState, weswegen ich lieber den Keyboardhook benutzen würde.

    greetz KN4CK3R



  • Hmmm,
    wie wäre es mit einer simplen RegisterHotKey() Funktion, in Verbindung mit WM_HOTKEY Nachricht?
    http://msdn.microsoft.com/en-us/library/ms646309(VS.85).aspx
    http://msdn.microsoft.com/en-us/library/ms646279(VS.85).aspx

    Diese Funktion gibst schon seit Ur-zeiten, nämlich Windows NT 3.1 :xmas2:
    Aber ich denke mal das ist viel zu einfach für Dich....

    Just my 5 cents

    P.S.: Übrigens, jede Hook-Funktion beansprucht zur Laufzeit zusätzliche Ressourcen der CPU! Steht auch so in der MSDN.



  • wenn ich die DLL zB in Notepad lade und dort Register Hotkey aufrufe, dann kann ich von Notepad nicht verlangen, dass er die WM_HOTKEY Message an meine DLL weiterleitet, außer ich hooke auch noch die Messageverarbeitung.

    Problem hat sich sowieso mittlerweile erübrigt, SetWindowsHookEx möchte nicht in der main-Funktion der DLL aufgerufen werden, woanders schon.

    greetz KN4CK3R



  • KN4CK3R schrieb:

    wenn ich die DLL zB in Notepad lade und dort Register Hotkey aufrufe, dann kann ich von Notepad nicht verlangen, dass er die WM_HOTKEY Message an meine DLL weiterleitet, außer ich hooke auch noch die Messageverarbeitung.

    Es reicht ja völlig aus, daß Deine DLL ein (unsichtbares) Fenster mit hwnd hat.
    Dieses hwnd gibst Du bei RegisterHotkey an.
    Und dieses Fenster bekommt dann die Nachrichten wie z.B. WM_HOTKEY.

    Einfache Lösungen sind immer noch elegantere Lösungen.



  • Hook, Hook, Hook!
    Haut ihm die Hooke voll!

    😃



  • hustbaer schrieb:

    Hook, Hook, Hook!
    Haut ihm die Hooke voll!

    😃

    aber echt 😉

    wie bekäme ich denn das HWND meines unsichtbaren Fenster raus das ich gar nicht erzeuge?

    greetz KN4CK3R



  • Mmacher schrieb:

    KN4CK3R schrieb:

    wenn ich die DLL zB in Notepad lade und dort Register Hotkey aufrufe, dann kann ich von Notepad nicht verlangen, dass er die WM_HOTKEY Message an meine DLL weiterleitet, außer ich hooke auch noch die Messageverarbeitung.

    Es reicht ja völlig aus, daß Deine DLL ein (unsichtbares) Fenster mit hwnd hat.
    Dieses hwnd gibst Du bei RegisterHotkey an.
    Und dieses Fenster bekommt dann die Nachrichten wie z.B. WM_HOTKEY.

    Einfache Lösungen sind immer noch elegantere Lösungen.

    Und das Fenster würde ich in einem eigenen Thread erzeugen, und dort auch Messages pumpen, damit alles schön unabhängig von Threads der Applikation ist.
    Dazu startet man im DLL_PROCESS_ATTACH einen Thread, was ganz gut funktioniert, solange man nicht auf den neuen Thread warten muss.



  • hä?^^ ich will doch gar kein Fenster erzeugen?! Wollte bloß erklärt haben, wie ich an das HWND des DLL Fensters komme, dass ich ja anscheinend erzeuge laut Mmacher.

    greetz KN4CK3R



  • du SOLLST aber eins erzeugen.
    was du TUST weiss ich natürlich nicht, und mmacher auch nicht, aber du SOLLST ein fenster erzeugen.
    das kannst du dann nämlich verwenden, um hotkeys zu empfangen.



  • Du sollst in der DLL einen Thread erstellen.
    In dessen Thread-Funktion steht dann der übliche Code für die Fenstererstellung (RegisterClassEx, CreateWindowEx, ShowWindow (aber mit SW_HIDE, damit unsichtbar!), UpdateWindow und letztendlich der Message-Pumpe)
    Dadurch hat man ja auch ein HWND und eine WndProc für dieses Fenster (das zwar unsichtbar, aber trotzdem da ist!)
    In dieser WndProc des unsichtbares Fenster kannste dann die WM_HOTKEY entgegennehmen.

    Ele



  • du kannst es dir leichter machen wenn du anstatt der dll die du injecten musst, einen treiber schreibst, damit sind keylogger relativ leicht zu verwirklichen, und zudem sind sie schlechter erkennbar als ein programm das ne dll injected.

    -- huubs, sah so aus wie der standart keylogger ansatz, habs erst jetzt gelesen 🙂

    --- taucht das neue fenster dann in enumerate windows auf? ( wäre eine detection mögl )



  • rofl als ob du oder der op ahnung von treiber programmierung hätten. ihr würdet doch mit den ersten 3 zeilen nen bsod hinkriegen.


Anmelden zum Antworten