#1 12. September 2008 Exe vergrößern Hallo, ich suche nach einer möglichkeit einer exe datei einfach zu vergrößern. Im endeffekt soll nichts geändert werden, die exe soll noch funktionsfähig sien etc, nur größer. danke + Multi-Zitat Zitieren
#2 12. September 2008 AW: Exe vergrößern am ende der exe datei kannst du soviel datenmüll hinmachen wie du willst. hexeditor -> ganz runter scrollen -> einfügen was und wieviel du willst. + Multi-Zitat Zitieren
#3 12. September 2008 AW: Exe vergrößern irgend nen schrott als ressource einbinden. ein großes bild, oä + Multi-Zitat Zitieren
#4 12. September 2008 AW: Exe vergrößern Das gehört doch eigentlich nicht zu Programmierung, oder? + Multi-Zitat Zitieren
#6 12. September 2008 AW: Exe vergrößern wie schon gesagt wurde, funktionsirrelevante daten kannste am ende des codes immer anhängen, aber darf man fragen was der sinn des ganzen is? speicherverschwendung? ^^ + Multi-Zitat Zitieren
#7 12. September 2008 AW: Exe vergrößern Code: #include <stdio.h> #include <string.h> #include <stdlib.h> #ifdef _WIN32 # pragma warning( disable: 4996 ) #endif typedef enum { false = 0, true, } bool; typedef long long int int64; typedef struct _Opts { int64 size; bool insert; char* input; char* output; int64 input_size; int64 input_addr; } Opts; bool init_env ( int argc, char **argv ); void clean_env ( void ); void write_file ( void ); int64 get_file_size ( const char* file ); bool file_exists ( const char* file ); Opts g_Opts = {0}; int main( int argc, char **argv ) { if( false == init_env( argc, argv ) ) { printf( "%s: You need to set at least 1 Parameter.\n"\ "%s [options] <output.img>\n\nOptions:\n"\ "\t-size <image_size>\n"\ "\t-insert <src.bin> <src insert at address>\n", *argv, *argv ); goto prg_end; } printf( "Writing %s with a size of %f MB\n", g_Opts.output, (float)((float)g_Opts.size/1024.0f)/1024.0f ); if( true == g_Opts.insert ) { printf( "Writing %s into %s at position %d\n", g_Opts.input, g_Opts.output, g_Opts.input_addr ); } write_file(); printf( "File Written\n" ); clean_env(); prg_end: return 0; } bool init_env( int argc, char **argv ) { int argi = 0; bool size = false; if( argc < 2 ) { return false; } g_Opts.insert = false; g_Opts.input = NULL; g_Opts.output = strdup(argv[argc-1]); g_Opts.input_addr = 0; g_Opts.size = 0; for( argi=0; argi<argc; argi++ ) { if( 0 == strcmp( argv[argi], "-size" ) ) { if( (argc-(argi+1)) < 1 ) { return false; } g_Opts.size = atoi( argv[++argi] ); size = true; } if( 0 == strcmp( argv[argi], "-insert" ) ) { if( (argc-(argi+2)) < 1 ) { return false; } g_Opts.insert = true; g_Opts.input = strdup( argv[++argi] ); g_Opts.input_addr = atoi( argv[++argi] ); } if( 0 == strcmp( argv[argi], "-help" ) || 0 == strcmp( argv[argi], "-h" ) ) { printf( "%s [options] <output.img>\n\nOptions:\n"\ "\t-size <image_size>\n"\ "\t-insert <src.bin> <src insert at address>\n", *argv ); exit(0); } } if( size == false ) { g_Opts.size = 1474560;//1509949; } if( true == g_Opts.insert ) { if( false == file_exists( g_Opts.input ) ) { g_Opts.insert = false; free( g_Opts.input ); g_Opts.input = NULL; } else { g_Opts.input_size = get_file_size( g_Opts.input ); if( g_Opts.size < g_Opts.input_size ) { g_Opts.insert = false; free( g_Opts.input ); g_Opts.input = NULL; } } } return true; } int64 get_file_size ( const char* file ) { int64 size = 0; int pos = 0; FILE* descr = fopen( file, "r" ); pos = ftell( descr ); fseek( descr, 0, SEEK_END ); size = ftell( descr ); fseek( descr, pos, SEEK_SET ); fclose( descr ); return size; } void write_file ( void ) { int64 size = 0; int64 inputsize = 0; char write = 0; FILE* destDescr = fopen( g_Opts.output, "wb" ); FILE* inputDescr = NULL; if( true == g_Opts.insert ) { inputDescr = fopen( g_Opts.input, "rb" ); } for( size = 0; size < g_Opts.size; size++ ) { if( true == g_Opts.insert && size >= g_Opts.input_addr && inputsize < g_Opts.input_size ) { fseek( inputDescr, inputsize, SEEK_SET ); write = fgetc( inputDescr ); //printf( "Writing at 0x%x\n", size ); fwrite( &write, 1, 1, destDescr ); inputsize++; } else { fputc( 0x00, destDescr ); } } if( true == g_Opts.insert ) { fclose( inputDescr ); } fclose( destDescr ); } void clean_env( void ) { if( true == g_Opts.insert ) { if( g_Opts.input != NULL ) { free( g_Opts.input ); } } if( g_Opts.output != NULL ) { free( g_Opts.output ); } } bool file_exists ( const char* file ) { bool exists = true; FILE *descr = fopen( file, "r" ); if( NULL == descr ) { exists = false; } else { fclose( descr ); } return exists; } Kompilieren. Benutzen: bla.exe -insert deine_zu_vergrößernde.exe 0 -size einegrößeinbytes irgendeinname.exe Hab ich zum Erstellen für Floppy Images geschrieben, scheint hier aber auch für zu passen. + Multi-Zitat Zitieren
#9 12. September 2008 AW: Exe vergrößern geht auch einfach per batch: for %%x in (*.exe) do echo.>> %%x allerdings zeitaufwändig, da jedesmal nur die bytes "0D 0A" angehängt werden. + Multi-Zitat Zitieren