####################################################################### Luigi Auriemma Applicazione: Medieval Total War http://www.totalwar.com Versioni: <= 1.1 Piattaforme: Windows Bug: Crash remoto del server e di tutti i clients ad esso connessi a causa di un nickname troppo grande Date: 07 Oct 2003 Autore: Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org ####################################################################### 1) Introduzione 2) Bug 3) The Code 4) Fix ####################################################################### =============== 1) Introduzione =============== Medieval Total War e' un gioco di strategia in tempo reale disponibile per PC ed e' sviluppato da Creative Assembly (http://www.creative-assembly.co.uk) e pubblicato da Activision (http://www.activision.com). E' stato rilasciato ad Agosto 2002. ####################################################################### ====== 2) Bug ====== I giocatori di MTW hanno accesso al server solo in un determinato momento e non durante l'esecuzione del gioco. Questo momento e' il Lobby screen prima dell'inizio del match dove tutti i giocatori possono partecipare. Il bug risiede nella gestione dei nicknames inviati dai clients, infatti un nickname lungo piu' di 76 caratteri unicode causa il crash immediato del server e di tutti i clients ad esso connessi. Il problema sembra essere nell'accesso a zone di memoria irraggiungibili, e questa e' l'istruzione dove avviene il crash (usando 76 caratteri): :0x6b96f8 mov eax,DWORD PTR [edx] Sia EAX che EDX sono uguali a 0. Nicknames piu' grandi causano eccezioni in altre istruzioni ma il problema rimane sempre l'accesso a zone di memoria irraggiungibili. Daii miei tests non sembra possibile eseguire codice perche' i registri che vengono sovrascritti dai dati non possono cambiare il flusso di codice. Nota: su Win98SE ho notato che un nickname molto grande (almeno 250 caratteri unicode) causa un blue screen of the death. ####################################################################### =========== 3) The Code =========== Ho scritto un semplice proof-of-concept che permette anche di specificare la quantita' di caratteri unicode da usare per il campo nickname. Usa un numero maggiore od uguale a 76: http://aluigi.org/poc/mtwdos-server.zip ####################################################################### ====== 4) Fix ====== No fix. Ho contattato Creative Assembly un sacco di mesi fa' ma non avevano risorse per correggere questo bug. #######################################################################