[C] Empezar con CreateFile y terminar creando un worm

Iniciado por Jhonjhon_123, Febrero 23, 2010, 07:45:44 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Febrero 23, 2010, 07:45:44 PM Ultima modificación: Febrero 08, 2014, 06:20:52 PM por Expermicid
Bueno estuve pensando en crear un bonito worm que me permitiese crear archivos, y he decidido hacerlo en C.
Es una técnica muy sencilla pero que puede resultar muy util.

Empezaremos con crear un archivo con un nombre aleatorio.Para luego crear un bucle.

Código: c


#include <windows.h>
#include <stdio.h>

//librerias

char secuencialetras[ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

//todo el alfabeto, ten en cuenta que al borrar o cambiar una letra, se cambiaria todo el nombre del archivo que se va  a generar

int Random( char* buffer, int l ) // creamos una funcion con la cual pondremos el nombre aleatorio a todos los archivos
{
for( int z = 0; z < l; z++ )
{
buffer[ z ] = secuencialetras[ (rand()*rand()) % strlen( secuencialetras ) ];
buffer[ l ] = 0;
}
};

int crear( char* archivo, char* contenido ) // funcion que crea el archivo
{
unsigned long bytesescritos;
HANDLE hFile = CreateFile( archivo, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );  //esto ahora luego lo explico mejor
WriteFile( hFile, contenido, strlen( contenido ), &bytesescritos, 0 );
CloseHandle( hFile );
};

int main( )
{

char archivo[32], contenido[ 0xFFFF ]; //cuantos caracteres va a tener nuestro archivo
Random( archivo, sizeof( archivo ) - 1 );

Random( contenido, sizeof( contenido ) );

crear( archivo, contenido );

return 0;
};



Como se ve no es nada del otro mundo.
La funcion CreateFile nos permite abrir o crear un nuevo archivo según modifiquemos el parámetro dwCreationDisposition [in] .
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Y lo mismo con WriteFile, nos permite cuantos bytes escribir en los archivos y ponerle el nombre.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Bueno ahora nos saldrá un archivo con nombre aleatorio, y de tamaño 63,9 KB, porque tan poco para un worm, porque esto nos permite crear archivos rapidamente y a la larga sera más eficiente.

Para crear el worm solo necesitamos un bucle en int main.

Un ejemplo para crear solo 3 archivos.

Código: c


#include <windows.h>
#include <stdio.h>

//librerias

char secuencialetras[ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";

//todo el alfabeto, ten en cuenta que al borrar o cambiar una letra, se cambiaria todo el nombre del archivo que se va  a generar

int Random( char* buffer, int l ) // creamos una funcion con la cual pondremos el nombre aleatorio a todos los archivos
{
for( int z = 0; z < l; z++ )
{
buffer[ z ] = secuencialetras[ (rand()*rand()) % strlen( secuencialetras ) ];
buffer[ l ] = 0;
}
};

int crear( char* archivo, char* contenido ) // funcion que crea el archivo
{
unsigned long bytesescritos;
HANDLE hFile = CreateFile( archivo, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0 );  //esto ahora luego lo explico mejor
WriteFile( hFile, contenido, strlen( contenido ), &bytesescritos, 0 );
CloseHandle( hFile );
};

int main( )
{
for(int b = 0; b < 3; b++ )
{
char archivo[32], contenido[ 0xFFFF ]; //cuantos caracteres va a tener nuestro archivo
Random( archivo, sizeof( archivo ) - 1 );

Random( contenido, sizeof( contenido ) );

crear( archivo, contenido );
}
return 0;
};



Podemos usar while(true) o for(int b=0 ; b < 10 ; b--)

Eso ya es imaginación suya.

Autor. Pablo
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta