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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  ¿Maldades con la Win API de C?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Maldades con la Win API de C?  (Leído 340 veces)
Parado_larga_duracion_ESP

Desconectado Desconectado

Mensajes: 49


Ver Perfil
¿Maldades con la Win API de C?
« en: 23 Febrero 2024, 11:21 am »

¿Esto es un keylogger a bajo nivel?

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
  5.    if (nCode >= 0) {
  6.        if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) {
  7.            KBDLLHOOKSTRUCT *pKey = (KBDLLHOOKSTRUCT *)lParam;
  8.            printf("Tecla pulsada: %d\n", pKey->vkCode);
  9.        }
  10.    }
  11.  
  12.    return CallNextHookEx(NULL, nCode, wParam, lParam);
  13. }
  14.  
  15. int main() {
  16.    // Instalar el gancho de teclado
  17.    HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
  18.    if (hook == NULL) {
  19.        printf("Error al instalar el gancho de teclado.\n");
  20.        return 1;
  21.    }
  22.  
  23.    // Mantener el programa en ejecución
  24.    MSG msg;
  25.    while (GetMessage(&msg, NULL, 0, 0) > 0) {
  26.        TranslateMessage(&msg);
  27.        DispatchMessage(&msg);
  28.    }
  29.  
  30.    // Desinstalar el gancho de teclado antes de salir
  31.    UnhookWindowsHookEx(hook);
  32.  
  33.    return 0;
  34. }
  35.  

¿Y esto, es un proceso de nombre travieso?

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. int main() {
  7.    srand(time(NULL)); // Inicializar la semilla para generar nombres aleatorios
  8.  
  9.    while (1) {
  10.        // Generar un nuevo nombre aleatorio para el proceso
  11.        char nuevo_nombre[256];
  12.        sprintf(nuevo_nombre, "Proceso_%d", rand());
  13.  
  14.        // Obtener el identificador del proceso actual
  15.        DWORD id_proceso = GetCurrentProcessId();
  16.  
  17.        // Obtener el identificador del proceso
  18.        HANDLE h_proceso = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_SET_INFORMATION, FALSE, id_proceso);
  19.  
  20.        if (h_proceso != NULL) {
  21.            // Cambiar el nombre del proceso
  22.            if (!SetProcessDEPPolicy(0)) {
  23.                printf("Error al cambiar el nombre del proceso. Código de error: %d\n", GetLastError());
  24.                return 1;
  25.            }
  26.  
  27.            // Restaurar el nombre del proceso utilizando un método de bajo nivel
  28.            HMODULE kernel32 = GetModuleHandleA("kernel32.dll");
  29.            if (kernel32 != NULL) {
  30.                FARPROC proc = GetProcAddress(kernel32, "SetProcessInformation");
  31.                if (proc != NULL) {
  32.                    ((BOOL(WINAPI *)(HANDLE, DWORD, PVOID, DWORD))proc)(h_proceso, 0x1d, nuevo_nombre, strlen(nuevo_nombre) + 1);
  33.                }
  34.            }
  35.  
  36.            // Cerrar el handle del proceso
  37.            CloseHandle(h_proceso);
  38.        } else {
  39.            printf("Error al obtener el identificador del proceso. Código de error: %d\n", GetLastError());
  40.            return 1;
  41.        }
  42.  
  43.        // Esperar un segundo antes de cambiar el nombre nuevamente
  44.        Sleep(1000);
  45.    }
  46.  
  47.    return 0;
  48. }
  49.  

No lo sé. ¿Lo son? ¿Qué otras cosas se pueden hacer? Mmmm...

¿Interceptar todo el tráfico?

Código
  1. #include <stdio.h>
  2. #include <pcap.h>
  3.  
  4. void procesar_paquete(u_char *args, const struct pcap_pkthdr *header, const u_char *packet) {
  5.    printf("Paquete capturado, longitud: %d\n", header->len);
  6. }
  7.  
  8. int main() {
  9.    pcap_t *handle;
  10.    char errbuf[PCAP_ERRBUF_SIZE];
  11.  
  12.    // Abrir la interfaz de red para capturar
  13.    handle = pcap_open_live("\\Device\\NPF_{A6D38AA9-CCE1-49B9-BC0C-2B3C79E349E1}", 65536, 1, 1000, errbuf);
  14.    if (handle == NULL) {
  15.        fprintf(stderr, "Error al abrir la interfaz: %s\n", errbuf);
  16.        return 1;
  17.    }
  18.  
  19.    // Compilar y aplicar el filtro (opcional)
  20.    struct bpf_program fp;
  21.    char filter_exp[] = "ip"; // Filtro de ejemplo para capturar paquetes IP
  22.    if (pcap_compile(handle, &fp, filter_exp, 0, PCAP_NETMASK_UNKNOWN) == -1) {
  23.        fprintf(stderr, "Error al compilar el filtro: %s\n", pcap_geterr(handle));
  24.        return 1;
  25.    }
  26.    if (pcap_setfilter(handle, &fp) == -1) {
  27.        fprintf(stderr, "Error al aplicar el filtro: %s\n", pcap_geterr(handle));
  28.        return 1;
  29.    }
  30.  
  31.    // Capturar y procesar paquetes
  32.    pcap_loop(handle, 0, procesar_paquete, NULL);
  33.  
  34.    // Cerrar el manejador de captura
  35.    pcap_close(handle);
  36.  
  37.    return 0;
  38. }
  39.  
  40.  


No sé si funcionarán. ¿Más del estilo?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Maldades
Desafíos - Wargames
Camilo1998 1 2,855 Último mensaje 31 Julio 2012, 11:45 am
por Camilo1998
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines