Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Buffer overflow c/c++
Forum - C/C++ - Buffer overflow c/c++

Avatar
luca_c (Normal User)
Newbie


Messaggi: 5
Iscritto: 02/07/2009

Segnala al moderatore
Postato alle 23:05
Giovedì, 02/07/2009
Buongiorno a tutti,
vorrei chiedervi come individuare negli array del C/C++ il buffer overflow.

Per esempio:

char c[8];
int x[5][6][10];

c[20] = 'z';
x[4][7][4] = 11;

Esiste un metodo o un programma, compilatore per effettuare tale controllo facilmente.

(Inserisco questa domanda sia nel forum del C sia del C++)

    Grazie

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 23:17
Giovedì, 02/07/2009
Non so se ti riferisci al run-time o al compile-time.

Alcuni compilatori hanno specifiche opzioni per individuare quelli a compile-time.
Quelli a run-time possono essere individuati se si usano specifiche librerie (debug).

Ma le librerie di release non hanno codice per l'individuazione dei bo a run-time.


- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
luca_c (Normal User)
Newbie


Messaggi: 5
Iscritto: 02/07/2009

Segnala al moderatore
Postato alle 22:44
Venerdì, 03/07/2009
In effetti mi chiedevo proprio questo.

Per esempio:

int ii;
char x[10];

...
ii = rand();
x[ii] = 8;

In questo caso non posso in fase di compilazione individuare l'errore, ma come faccio in fase di run-time?
Esiste qualche compilatore che risolve questo problema?

    Grazie

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 22:53
Venerdì, 03/07/2009
Te  l'ho gia' detto ... a runtime lo puoi fare solo se compili usando librerie apposite (librerie di debug) che effettuano questo tipo di controlli (ovviamente non sono disponibili con tutti i compilatori).

Pero', quando rilasci l'eseguibile definitivo, devi usare le librerie "normali" che non fanno questi controlli dato che si possono rivelare piuttosto "pesanti" a runtime.

L'unico modo e' fare attenzione scrivendo codice "sicuro".



- Se le mie risposte non vi soddisfano, ignoratele, altrimenti un "grazie" e' molto gradito ...

"Dai un pesce (programma) a un uomo e lo nutrirai per un giorno. Insegnagli a pescare (programmare) e lo nutrirai per tutta la vita." (niente pappa pronta)
PM Quote
Avatar
luca_c (Normal User)
Newbie


Messaggi: 5
Iscritto: 02/07/2009

Segnala al moderatore
Postato alle 0:09
Mercoledì, 15/07/2009
Salve,
in questi giorni ho fatto una ricerca su internet sull'esistenza di qualche tool/compilatore in grado di aiutarmi nella ricerca del buffer overflow.

Sono riuscito a trovare un tool che risolve questo problema.
In più è indipendente dal compilatore che si stà usando e dal sistema operativo, in quanto è un semplice parser che converte il codice C/C++ in un nuovo codice C/C++ ricompilabile.
http://www.bugfighter-soft.com/images/BugFighter.jpg

L'ho provato ed in effetti rileva quello che promette, ho usato il Visual C++ Express per effettuare delle prove. I risultati sono stati buoni.

Il nome è BugFighter e lo si può scaricare dal sito www.bugfighter-soft.com

Voi l'avete provato?

Cosa ne sapete in proposito?

    Grazie


PM Quote