Ultimamente gioco spesso fino a tardi con amici a Need For Speed Underground 2, un videogioco spettacolare di corse tamarre nonchè illegali. Il problema era avere tutti noi dei profili utente completi al 100% in modo da poter gareggiare su tutte le piste, con tutte le macchine e tutti gli add-on. Mi è allora balzata in mente l'idea di programmare un piccolo applicativo in C per generare dal nulla un salvataggio con il gioco completo al 100%. La novità è che si può scegliere il nome del giocatore a differenza di quanto succede scaricando i salvataggi completi che si trovano in rete, con i quali si è costretti a giocare col nome profilo di quella persona.
Il programmino è scritto interamente in C e gira praticamente su tutti i sistemi Windows dal vetusto 95 sino al Vista/Seven. E' sufficiente avviare l'eseguibile, inserire il nome da assegnare al profilo (per un massimo di 20 caratteri) e attendere la creazione del file nella stessa directory del programma.
Come funziona
Come è possibile cambiare nome del giocatore nel file del profilo? Un profilo per NeedForSpeed Underground 2 è semplicemente un file da circa 54 kB nel quale sono memorizzate tutte le informazioni di gioco (quanto avete guadagnato, le macchine e relative tamarrizzazioni e così via). Tramite un editor esadecimale si vede chiaramente che alla locazione 0xD225 ha inizio la striga che codifica il nome del giocatore. Nel caso della figura qui sotto si tratta della stringa "gianluca":
E' sufficiente quindi dumpare su file una partita salvata completa al 100%:
void MemoryDump(unsigned char *newname)
{
FILE *out;
unsigned long int i;
out = fopen(newname,"wb");
for(i=0;i<DATALENGTH;i++)
{
fputc(savegame[i],out);
printf("%02X",savegame[i]);
if(!(i%20)) printf("\n");
}
fclose(out);
}
e sovrascrivere i dati a partire dalla locazione NAMEOFFSET (0xD225) in poi per assegnare il nome utente desiderato.
void NameOverwrite(unsigned char *newname)
{
strncpy(savegame+NAMEOFFSET,newname,strlen(newname));
}
A questo punto non resta che creare una cartella con lo stesso nome, copiare dentro il file di salvataggio appena creato e piazzare il tutto in:
C:\Documents and Settings\[utente]\Local Settings\Application Data\NFS Underground 2
ciao vorrei chiederti una mano per fare sta roba