elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 08:58  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  pulsaciones de teclas, fallan...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: pulsaciones de teclas, fallan...  (Leído 1,909 veces)
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
pulsaciones de teclas, fallan...
« en: 6 Agosto 2011, 07:17 »

Buenas... escribo en esta ocasión para saber si hay algún método para simular pulsaciones a parte de las básicas, ya que intento enviarle pulsaciones a un programa y este está ignorando incluso eventos simulados de mouse ignora todo lo que le paso...  los métodos funcionan ya que en otros programas hace lo que quiero y de maravilla...

por lo menos el clásico sendkeys, me funciona para todos los programas, pero si lo intento con el como ventana activa me lanza un aviso de que no tiene permisos (intente fallidamente corriéndolo como admin)

los sendmessage y postmessage los ignora completamente, mouse_event y kybd_event completamente ignorados... existe algún método que simule una pulsación física real? aunque sea simular un teclado por usb :s no se...

incluso en lineas generales si el programa está como ventana activa no puedo realizar eventos de mouse o teclado... (que tipo de magia negra usa?)

Descubri que el programa es fobico al teclado en pantalla (en w7) y hace lo posible por cerrarlo, logre mantenerlo abierto y consegui que si enviaba correctamente la pulsciones... alguien sabe que metodo puede estar usando? (no importa si me tengo que extender a c u otro lenguaje para simularlo... tampoco puedo usar los eventos para mover el mouse porque al estar la ventana como activa, todo muere)

Actualizacion:

SendInput en c++ tampoco funciona

Actualizacion 2:

no se, ya he intentado lo que he podido ya que no logro  sendmessage ni sendpost a el teclado virtual... se podría hacer algo tan extremo como inyectar la memoria del teclado virtual (que debería ser mas fácil que el juego ya que este teóricamente no esta protegido contra hack) para que inicie la rutina de haber clickeado en x lugar? antes he hecho rutinas de lectura e inyeccion de memoria peor para juegos simples... pero disparar un evento no sabría ni por donde empezar :s


« Última modificación: 7 Agosto 2011, 00:55 por engelx » En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #1 en: 7 Agosto 2011, 01:05 »

vale :P haz dicho que con postmessage y sendmessage no sirve? o no sabes como hacerlo con esas apis :P ???


En línea
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #2 en: 7 Agosto 2011, 02:19 »

En general de mis intentos...

Código:
Option Explicit
 
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const VK_SPACE = &H20
Private Const VK_F1 = &H70
 
Private Sub Command1_Click()
    Dim hWnd As Long
    'hWnd = FindWindow(vbNullString, "Sin título: Bloc de notas")
    hWnd = FindWindow(vbNullString, Text1.Text)
    Print hWnd
    Call PostMessage(hWnd, WM_KEYDOWN, VK_F1, 0&)
    Call PostMessage(hWnd, WM_KEYUP, VK_F1, 0&)
End Sub

si hago eso en el bloc de notas y cualquier aplicacion perfecto... si lo hago en el juego... nada


no necesito un super codigo, ni necesito armar un super programa para usuario -.- con que me envie f1 y f2 al juego aunque tenga que modificar algo del codigo manualmente cada vez, soy feliz!


Actualizacion: si abro el spy++ mientras el juego está abierto me sale un mensaje diciendo
"Cannot ser the WH_GETMESSAGE hook. Message logging in inoperable"

en lineas generales creo que el spy++ no me ayuda mucho aqui :S creo
« Última modificación: 7 Agosto 2011, 03:42 por engelx » En línea
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #3 en: 8 Agosto 2011, 06:39 »

logre con postmenssage y un poco de trabajo que el teclado virtual aceptara las pulsaciones... el conflicto ahora, es que si son pulsaciones simuladas el juego no las acepta, tienen que se reales del mouse :s wth??
En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #4 en: 8 Agosto 2011, 07:05 »

emm noce pero lo que puede suceder es que no le envias las pulsaciones al control o al objeto que quieres que se las envies :P mas o menos que tipo de programa es?
En línea
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #5 en: 8 Agosto 2011, 07:17 »

es un juego... con estos de proteccion bajo nProtect... enviarle comando directamente no sirve... y el teclado virtual (teóricamente) envía pulsaciones a la ventana activa... el asunto es que si lo dejo automático no hace nada, sin tocar mas nada ni modificar nada hago click sobre el teclado virtual y mágicamente si funciona... (y con otro programa fuera del juego las pulsaciones por software si están funcionando) tanta posibilidad tiene un programa para saber que las pulsaciones que van a otro son reales o no :s
En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #6 en: 8 Agosto 2011, 07:40 »

pues me imagino que el juego debe de detectar eso no :P
tambien tendrias que fijarte porq algunos juegos :P en donde uno escribe no son controles :P y ya haz probado es distintas partes del juego :P enc onfig o ventanas asi :P
En línea
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #7 en: 8 Agosto 2011, 15:41 »

es un juego en directx (por lo que deduzco de los errores que alguna vez ha arrojado) y por spy++ solo me entrega un handler universal que es el de la aplicacion (ya que incluso el spy++ lanza una advertencia de "Cannot ser the WH_GETMESSAGE hook. Message logging in inoperable" y se queda solo para ver quien es el hwnd de quien :s (y ya de ahi si no se como revisar los child o handler de estos de una ventana :s)
En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #8 en: 8 Agosto 2011, 17:48 »

podes usar las apis enumchildwindows ,  findwindowex
con enumchildwindow te enumera todo todas los child aunq la vdd pana dudo que funcione :P pero prueba :P
con findwindow buscas una determinada :P habria que venga alguien mas experto para que te digas que mas puedes hacer :P
En línea
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #9 en: 8 Agosto 2011, 18:02 »

estoy usando findwindow, findwindowEx y postmessage... dejame check el api de enumchilds y doy aviso... pero que que por ser directx el maneja todo junto en una sola ventana
En línea
Hasseds

Desconectado Desconectado

Mensajes: 144



Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #10 en: 9 Agosto 2011, 01:14 »

es un juego... con estos de proteccion bajo nProtect... enviarle comando directamente no sirve... y el teclado virtual (teóricamente) envía pulsaciones a la ventana activa... el asunto es que si lo dejo automático no hace nada, sin tocar mas nada ni modificar nada hago click sobre el teclado virtual y mágicamente si funciona... (y con otro programa fuera del juego las pulsaciones por software si están funcionando) tanta posibilidad tiene un programa para saber que las pulsaciones que van a otro son reales o no :s


Código:

Private Sub Command1_Click()
    Dim hWnd As Long
    'hWnd = FindWindow(vbNullString, "Sin título: Bloc de notas")
    hWnd = FindWindow(vbNullString, Text1.Text)
    Print hWnd
    Call PostMessage(hWnd, WM_KEYDOWN, VK_F1, 0&)
    Call PostMessage(hWnd, WM_KEYUP, VK_F1, 0&)
End Sub




Probaste activando la ventana del juego (SetForegroundWindow) antes de enviar el mensaje ?  

Código
 
Option Explicit
 
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
 
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
 
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const VK_SPACE = &H20
Private Const VK_F1 = &H70
 
Private Sub Command1_Click()
 
   Dim hWnd As Long
   hWnd = FindWindow(vbNullString, Text1.Text)
   Print hWnd
 
   Call SetForegroundWindow(hWnd)
 
   Call PostMessage(hWnd, WM_KEYDOWN, VK_F1, 0&)
   Call PostMessage(hWnd, WM_KEYUP, VK_F1, 0&)
 
End Sub
 
 






« Última modificación: 9 Agosto 2011, 01:24 por Hasseds » En línea

Sergio Desanti
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #11 en: 9 Agosto 2011, 01:23 »

dudo que funcione eso de enviar pulsaciones a un juego, quise hacer algo igual a un juego , intente varias cosas pero no da resultado, pero prueba el codigo de Hasseds kizas funcione (aunque dudo), lo que se me ocurre es que hagas una DLL en otro lenguaje y lo inyectes al juego.
En línea
engelx

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #12 en: 9 Agosto 2011, 03:00 »

Probe con setforegrownwindow, y como ya venia deduciendo, me pinto una gran paloma! xD

el programa no agarra esos mensajes...  

también intente con teclado virtual y seteando el juego con setforegrownwindow para asegurarme que fuera la activa, y tampoco funciono :P

algo que dice que tendre que tirarme una dll en c e inyectarla... pero no tengo la menor idea de como se hace D: asi que a leer y deseenme suerte! :s dare este caso por muerto

por si a alguien alguna vez le interesa a alguien aqui dejo mi codigo

Código:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long

Private Const WM_LBUTTONDOWN = &H201 ' botón izquierdo abajo
Private Const WM_LBUTTONUP = &H202 ' izquierdo arriba
dim h, h2, hw as Long

Private Sub Conectar()
    
    h2 = FindWindow(vbNullString, Text1.Text)
    hw = FindWindow("OSKMainClass", vbNullString)
    h = FindWindowEx(hw, 0&, "DirectUIHWND", vbNullString)
    Call SetForegroundWindow(h2)
    Label1.Caption = h
    
End Sub

Private Sub click(x As Long, y As Long)

    Dim q As Long
    Call SetForegroundWindow(h2)
    q = ((2 ^ 16) * y) + x 'las coordenadas pasadas como long, y por el high, x por el low
    Call PostMessage(h, WM_LBUTTONDOWN, &H1, q)
    Call PostMessage(h, WM_LBUTTONUP, &H0, q)
    Label1.Caption = x & ":" & y
    
End Sub

Private Sub Num(n As Long, Optional f As Boolean) 'n es referente al numero a ser presionado y f si va a ser un F# o un #
    
    If n = 0 Then n = 10
    n = 80 + (39 * n) 'calcula la posición x de los números en el teclado virtual al mínimo tamaño
    If f = True Then
    Call click(432, 123) 'posicion del Fn
    Sleep (500)
    End If
    Call click(n, 40)

End Sub




y para usarlo solo seria necesario
Código:

Call Conectar
Call Num(2, True)

« Última modificación: 9 Agosto 2011, 03:08 por engelx » En línea
AlxSpy

Desconectado Desconectado

Mensajes: 137


Ver Perfil
Re: pulsaciones de teclas, fallan...
« Respuesta #13 en: 9 Agosto 2011, 03:11 »

usa delphi sera mas sencillo.
En línea
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: pulsaciones de teclas, fallan...
« Respuesta #14 en: 9 Agosto 2011, 03:13 »

usa delphi sera mas sencillo.
Usa un teclado automatico por USB :D
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Emular pulsaciones de teclas
Programación C/C++
Dreewzt 5 2,277 Último mensaje 21 Enero 2009, 10:09
por Arkangel_0x7C5
enviar pulsaciones
Programación Visual Basic
manel92 5 834 Último mensaje 18 Junio 2009, 03:14
por yovaninu
Teclas rápidas-atajos-combinaciones de teclas
Software
SerPan 2 2,455 Último mensaje 13 Marzo 2010, 17:46
por SerPan
Enviar pulsaciones de teclas
Programación C/C++
s_azazel 10 3,462 Último mensaje 4 Noviembre 2010, 21:40
por тαптяαпсє
pulsaciones teclas ignoradas
Hacking Avanzado
engelx 3 1,216 Último mensaje 8 Agosto 2011, 14:22
por engelx
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines