Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: r1ghtz0 en Marzo 11, 2018, 09:56:49 pm

Título: Ayuda OK
Publicado por: r1ghtz0 en Marzo 11, 2018, 09:56:49 pm
Bueno este codigo que esta aqui la funcion GetAsyncKeyState(tecla) devuelve 1 si se presiono una tecla, yo presiono la tecla 70 (ASCII) y  el valor devuelto por la GetAsyncKeyState(tecla) dice que es igual a OK -32767 pero ¿por que? si GetAsyncKeyState(tecla) devuelve 1 al presiona una tecla.

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define OK -32767

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {

int tecla= 70;
int tep;

do{

if(tep= GetAsyncKeyState(tecla)==OK){ //si pulsa una tecla
    printf("%d\n", tep);
    }

}while(1<2);

return 0;
}
Título: Re:Ayuda OK
Publicado por: 3f1m3r0 en Marzo 12, 2018, 01:00:26 am
q tal, creo que el descuido es el if

Código: C
  1. //if(  tep = GetAsyncKeyState(tecla )== OK )
  2. //creo que deberia estar asi :
  3. if( ( tep = GetAsyncKeyState(tecla ))== OK )
  4.  

saludos  :D :D
Título: Re:Ayuda OK
Publicado por: r1ghtz0 en Marzo 13, 2018, 11:40:24 pm
Pero que es OK -32767 porque esta constante se compara con uno?
Título: Re:Ayuda OK
Publicado por: 3f1m3r0 en Marzo 14, 2018, 02:20:53 am
me retracto de la estupidez que escribi :-[ un saludo y mil disculpas.

http://winapi.conclase.net/curso/?winfun=GetAsyncKeyState
Título: Re:Ayuda OK
Publicado por: ravenheart en Marzo 18, 2018, 09:31:01 am
https://msdn.microsoft.com/es-es/library/windows/desktop/ms646293(v=vs.85).aspx

https://msdn.microsoft.com/es-es/library/windows/desktop/dd375731(v=vs.85).aspx

En primer lugar, el parámetro que recibe la función no es el código ASCII, sino un código interno de windows (Virtual-key code) que tienes en uno de los enlaces anteriores.

En el otro enlace, en la sección Return Value, te explica el significado del valor devuelto:
Citar
If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState
-32767 en binario es 1000 0000 0000 0001. Es decir, que la tecla está pulsada, y también lo estaba en la llamada anterior.