elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda GetAsyncKeyState()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda GetAsyncKeyState()  (Leído 5,245 veces)
Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Ayuda GetAsyncKeyState()
« en: 5 Abril 2013, 18:57 pm »

Hola genteee , miren tengo esta dll , y la quiero injectar a un proceso ..

Código
  1. #include <windows.h>
  2.  
  3.  
  4.  
  5. BOOL APIENTRY DllMain (HINSTANCE hmodule,    
  6.                       DWORD reason,        
  7.                       LPVOID reserved    )  
  8. {
  9.    switch (reason)  
  10.    {      
  11.      case DLL_PROCESS_ATTACH:
  12.  if(GetAsyncKeyState(VK_F12))
  13. {
  14. MessageBox(NULL,"Presionaste F12","Mensaje",MB_OK);
  15. }
  16.        break;
  17.    }
  18.    return TRUE;
  19. }

injecto la dll , pero cuando preciono F12 no pasa nada ... el programa donde es injectada ya tiene la funcion GetAsyncKeyState, entonces les hago una pregunta , tengo que hookear la funcion GetAsyncKeyState para que mi F12 funcione ?

Saludos !


En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ayuda GetAsyncKeyState()
« Respuesta #1 en: 5 Abril 2013, 21:06 pm »

Este es un código que hice recientemente donde se utiliza esa función, fijate si podés hacer que te funcione mirando el código, sino avisame
http://foro.elhacker.net/programacion_cc/mensaje_scroll-t386831.0.html


En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda GetAsyncKeyState()
« Respuesta #2 en: 6 Abril 2013, 10:41 am »

Agrega un loop de mensajes, y yo crearia un hilo para capturar las teclas o bien estableceria un hook que es mejor.
En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ayuda GetAsyncKeyState()
« Respuesta #3 en: 6 Abril 2013, 16:09 pm »

Claro es como te dije por PM, GetAsyncKeyState te sirve para comprobar continuamente el estado de una llave (key), si vos lo hacés tal como está en el primer post, significa que sólo se va a comprobar 1 sóla vez cuando la DLL se adjunte al proceso. Con una sóla vez que lo compruebes no sirve, porque vos podés presionar una llave en cualquier momento y no justo cuando la DLL se carga, por eso necesitás hacerlo dentro de un bucle.

Al mismo tiempo, fijate que por ejemplo en mi código, yo tengo 2 hilos. El principal de la aplicación y el secundario creado con CreateThread explícitamente. Bueno lo que tenés que hacer dentro del secundario es poner un Sleep con un cierto tiempo, ya que dependiendo del sistema de planificación, vos sabés que los hilos necesitan compartir el tiempo de ejecución asignado al proceso. (Ejecución = CPU).
Sería como una planificación manual del programador, poner un Sleep para dejar "respírar" al hilo secundario y pasar al primario.

Alguien experto en planificación, multithreading, multiprocessor, etc te va a poder explicar con más detalle todo esto, porque puede ser diferente para distintas CPUs (monoprocesador o multiprocesador).

En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda GetAsyncKeyState()
« Respuesta #4 en: 6 Abril 2013, 19:00 pm »

Claro es como te dije por PM, GetAsyncKeyState te sirve para comprobar continuamente el estado de una llave (key), si vos lo hacés tal como está en el primer post, significa que sólo se va a comprobar 1 sóla vez cuando la DLL se adjunte al proceso. Con una sóla vez que lo compruebes no sirve, porque vos podés presionar una llave en cualquier momento y no justo cuando la DLL se carga, por eso necesitás hacerlo dentro de un bucle.

Al mismo tiempo, fijate que por ejemplo en mi código, yo tengo 2 hilos. El principal de la aplicación y el secundario creado con CreateThread explícitamente. Bueno lo que tenés que hacer dentro del secundario es poner un Sleep con un cierto tiempo, ya que dependiendo del sistema de planificación, vos sabés que los hilos necesitan compartir el tiempo de ejecución asignado al proceso. (Ejecución = CPU).
Sería como una planificación manual del programador, poner un Sleep para dejar "respírar" al hilo secundario y pasar al primario.

Alguien experto en planificación, multithreading, multiprocessor, etc te va a poder explicar con más detalle todo esto, porque puede ser diferente para distintas CPUs (monoprocesador o multiprocesador).



Seria bueno publicar codigos aquí para la gente que tenga problemas similares  ::)
En línea

Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda GetAsyncKeyState()
« Respuesta #5 en: 7 Abril 2013, 03:02 am »

Gracias a todos por las respuesta, mirando un poco el codigo que me paso 85, pude hacer algo , me sirvio mucho la explicacion que me diste sobre Sleep(), bueno aca el codigo !
Código
  1. //Ejemplo GetAsyncKeyState
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #define INTERVAL 250
  5.  
  6. int main()
  7. {
  8.     char  * TECLAF12 ="OFF";
  9. char  * TECLAF11 ="OFF";
  10. char  * TECLAF10 ="OFF";
  11. char  * TECLAF9 ="OFF";
  12.  
  13. while(!GetAsyncKeyState(VK_INSERT)) //Cuando se preciones la tecla INSERT se saldra del ciclo while
  14. {
  15. system("cls");
  16. printf("Tecla [F12] -> : [%s]\n",TECLAF12);
  17. printf("Tecla [F11] -> : [%s]\n",TECLAF11);
  18. printf("Tecla [F10] -> : [%s]\n",TECLAF10);
  19. printf("Tecla [F09] -> : [%s]\n",TECLAF9);
  20. printf("\nSalir [INSERT]\n");
  21.  
  22. if(GetAsyncKeyState(VK_F12))
  23. {
  24. TECLAF12 ="ON";
  25. }
  26. if(GetAsyncKeyState(VK_F11))
  27. {
  28. TECLAF11 ="ON";
  29. }
  30. if(GetAsyncKeyState(VK_F10))
  31. {
  32. TECLAF10 ="ON";
  33. }
  34. if(GetAsyncKeyState(VK_F9))
  35. {
  36. TECLAF9 ="ON";
  37. }
  38.  
  39. Sleep(INTERVAL);
  40.  
  41. }
  42. }
  43.  

Espero que les sirva de ejemplo , S2!
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Ayuda GetAsyncKeyState()
« Respuesta #6 en: 7 Abril 2013, 03:33 am »

Es mejor establecer un hook, si sera en una dll a injectar entonces no es necesario global.
En línea

Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Ayuda GetAsyncKeyState()
« Respuesta #7 en: 7 Abril 2013, 03:56 am »

si por ahora estoy tratando de entender la funcion , despues voy a ver si la puedo implementar en demas cosas
En línea

85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: Ayuda GetAsyncKeyState()
« Respuesta #8 en: 7 Abril 2013, 16:29 pm »

Si ese código funciona está bien, pero lo que te decía del Sleep es que era necesario cuando tenés más de un hilo, es como una planificación manual.
En este caso no es necesario porque tenés 1 sólo hilo, aunque dejalo para que no se queme tu CPU de tantas iteraciones XD
En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con GetAsyncKeyState
Programación Visual Basic
oPen syLar 0 1,479 Último mensaje 6 Diciembre 2006, 15:41 pm
por oPen syLar
Sobre getasynckeystate en c#
Programación General
Foxzer 1 7,857 Último mensaje 14 Mayo 2010, 06:59 am
por Littlehorse
bromilla con GetAsyncKeyState
Programación Visual Basic
asdexiva 2 2,404 Último mensaje 20 Octubre 2013, 14:52 pm
por asdexiva
Llamadas API de keylogger/SetWindowsHookEx vs GetAsyncKeyState
Análisis y Diseño de Malware
TickTack 0 10,983 Último mensaje 27 Abril 2021, 09:30 am
por TickTack
Escapar de un Ciclo con GetAsyncKeyState
Programación C/C++
snoopty 4 7,055 Último mensaje 16 Septiembre 2021, 01:10 am
por snoopty
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines