Keyboard-Hook blocken



  • Guten Abend,
    zur Zeit schreibe ich ein Verschlüsselungsprogramm, welches in einem Editfeld nach einen Kennwort fragt.

    Nun möchte ich das alle Keyboard Hooks (oder auch Mouse-Hooks wegen Bildschirmtastatur) kurzzeitig deaktiviert werden oder geblockt werden so, dass sie die Eingabe nicht mit verfolgen können.

    Kann man das bewerkstelligen ohne das System im Abgesichtern Modus zu starten oder sonst was User unfreundliches, ich denke mal das ES_PASSWORD im Editfeld nicht ausreicht um die Eingabe zu verschleiern ? 😃

    Vielen Dank für Antworten und Kommentare 😃



  • der cracker hat bei zugriff/kontrolle auf seinen pc immer das letzte wort


  • Mod

    Nein!



  • Okay, vielen Dank erstmal.

    Aber könnte man nicht einfach einen eigenen Hook starten und dann CallNextHook() weg lassen dann würden doch die anderen Hooks keine Nachrichten mehr bekommen oder gibts dann einen Systemfehler ? 😕


  • Mod

    1. Woher weißt Du, dass Du der erstein der Hook-Chan bist und nicht der letzte?
    2. Wenn Du der erste bist in der Chain, woher weißt, Du, dass nict gerade jemand anderes sich vor Dich gesetzt hast.
    3. Und ja: Es steht eindeutig in der Doku drin, dass das System sich fehlverhalten kann, wenn Du nicht die Chain einhältst.



  • Gute Argumente !
    Dann werde ich mal versuchen, ob ich die Eingabe für hooks verschleiern kann, indem ich SendMessage() mit WM_KEYDOWN aufrufe und so zwischen der Eingabe andere Buchstaben, Zahlen usw. verschicke.

    Vielen Dank für alle Antworten 😃


  • Mod

    Frager schrieb:

    Gute Argumente !
    Dann werde ich mal versuchen, ob ich die Eingabe für hooks verschleiern kann, indem ich SendMessage() mit WM_KEYDOWN aufrufe und so zwischen der Eingabe andere Buchstaben, Zahlen usw. verschicke.

    Vielen Dank für alle Antworten 😃

    Das wird Dir nicht gelingen, weil ein Keyboard Hook, diese Nachrichten nicht als Tastendruck erkennt. Selbst ein externes pollen mit GetAsynchKeyState würdest Du nicht mitbekommen.



  • Hmm, erzeuge dir eine Dialogfenster mit ausreichend Buttons. Beim Drücken dieser Buttons wir ein entsprechender Buchstabe/Zahl/Zeichen in dein Editfeld eingetragen. Also sowas wie eine virtuelle Tastatur.



  • Danke für die Idee, aber das könnte man ja auch auslesen !
    Zwar nicht mit einem Keyboard Hook aber Maus Hook. Ich glaube langsam das man eine Anwendung nciht 100% sicher gegen hacker versuche oder Ähnlcihes machen kann,
    aber versuchen kann es ihnen so schwer wie möglich zumachen.



  • Dein Programm könnte versuchen, DLL's die injeziert werden zu erkennen, um den Benutzer dann zu warnen dass warscheinlich seinen Eingaben abgefangen werden.
    Aber so ein Keyboard-Hook ist ja nicht die einzige Lösung wie man deine Eingaben abfangen könnte. Von daher müsstest du verschieden Methoden in Betracht ziehen.
    Dies wird aber ziemlich aufwendig, und wiederspiegelt nicht selten Antiviren-Routinen die, unter anderem aus Filter-Treiber - API-Hook's etc. bestehen.
    Also ziemlich aufwendig.

    Viel Spass



  • lowbyte_ schrieb:

    Dein Programm könnte versuchen, DLL's die injeziert werden zu erkennen, um den Benutzer dann zu warnen dass warscheinlich seinen Eingaben abgefangen werden.
    Aber so ein Keyboard-Hook ist ja nicht die einzige Lösung wie man deine Eingaben abfangen könnte. Von daher müsstest du verschieden Methoden in Betracht ziehen.
    Dies wird aber ziemlich aufwendig, und wiederspiegelt nicht selten Antiviren-Routinen die, unter anderem aus Filter-Treiber - API-Hook's etc. bestehen.
    Also ziemlich aufwendig.

    Viel Spass

    Ja, da werde ich spaß haben !

    Hab mir mal gedacht, wenn es so schwer ist alle Hooks usw. zublocken oder versuchen die Eingabe zu "verstecken", dann könnte man doch auch die Kennworteinagbe bei der Sperrung von Windows abfangen (Win+L), aber das habe ich versucht und da bekomme ich keinerlei Tastendrücke gemeldet auch bei der UAC ist das der Fall !
    Weiß jemand wie das Windows macht ? Und könnte man das Prinzip kopieren ?



  • Ja klar kann WIndows das. Aber Billi will nicht das du das unter Windows kannst!
    Ausser du kannst ein bisschen Kernel zeugs verbiegen.


  • Mod

    Da läuft eine spezielle Session mit einem eigenen Desktop. Diese ist durch Windows speziell geschützt.



  • lowbyte_ schrieb:

    Ja klar kann WIndows das. Aber Billi will nicht das du das unter Windows kannst!
    Ausser du kannst ein bisschen Kernel zeugs verbiegen.

    Ok, aber Billi 😃 arbeite doch auch nur mit Source-Code, warum will Mircosoft das nciht frei geben ? Dann könnten alle Sicherheitsnotwendigen Informationen von extrenen Programm gegen unberechtigten Zugriff geblockt werden.

    Martin Richter schrieb:

    Da läuft eine spezielle Session mit einem eigenen Desktop. Diese ist durch Windows speziell geschützt.

    Könnte eine Anwendung da nicht für eine kurze Zeit integrieren werden?



  • Frager schrieb:

    Danke für die Idee, aber das könnte man ja auch auslesen !
    Zwar nicht mit einem Keyboard Hook aber Maus Hook. Ich glaube langsam das man eine Anwendung nciht 100% sicher gegen hacker versuche oder Ähnlcihes machen kann,
    aber versuchen kann es ihnen so schwer wie möglich zumachen.

    Naja auslesen geht schon, aber nur mit speziell auf die Anwendung abgestimmtem Code 😉
    Zum Spass könnte man die Anordnung der "virtuellen Tastatur" durcheinanderwürfeln 😃
    Wird allerdings die User vergraulen 😃

    Mal abgesehen davon kann man das Passwort dann immer noch (viel einfacher als mit Hooks) direkt aus dem Speicher auslesen....

    Wenn dus absolut sicher haben willst bau dir nen eigenen Tastaturtreiber 😃

    EDIT: wobei absolut sicher auch wieder relativ ist... Speicher lesen ist auch möglich, oder Hardwarekeylogger, etc....



  • livinskull schrieb:

    Wenn dus absolut sicher haben willst bau dir nen eigenen Tastaturtreiber 😃

    Coole Idee 😃 ~~, hab noch nie ein Treiber geschrieben muss man den in ASM schreiben oder kann auch C/C++ benutzen ?

    Gibt es da einige Code-Beispiele oder Befehlsrefernzen , Tutorials in der Richtung usw. 😕~~

    Aber kann ich den Treiber zeitweise in das System einfügen oder muss ich den dauerhaft installieren ? 😃

    Muss ich den dann als DLL in´s Windowsverzeichnis verschieben oder wie macht man das ?

    Mit Treiberprogrammierung hab ich mich noch nicht beschäfftigt, aber wird ein geiles Thema werden 😃



  • Ein Treiber muss nicht zwangsläufig in das System integriert werden.
    Hier(http://www.freewebs.com/four-f/) gibt es sehr gute Ideen. Zum Beispiel wie man einen Treiber "mal eben" laden kann. zudem hast du alles als MASM32 Packet dabei.
    Ein problem wird aber sein den Treiber unter 64bittigen Maschinen ans laufen zu bekommen. Dafür musst du den Treiber entweder signieren oder du schaltest die Überprüfung aus und läufst somit im Testmodus



  • Vielen Dank werde mal die Seite gründlich druch arbeiten 😃
    Aber auf den ersten Blick scheint sie sehr hilfreich zu sein

    Danke 🙂


Log in to reply