Se ti riferisci al buffer overrun, non serve per vedere i sorgenti, perchè comunque una volta compilato un sorgente non è possibile, automaticamente o comunque con facilità, decompilare il codice oggetto.

Il problema delle sicurezza sta nel fatto che la funzione scanf non potrebbe effettuare controlli su input mal formati.

Questo è un esempio di funzione vulnerabile agli overrun, infatti non verifica se <nome>, supera i confini della variabile <tmp> allocata sullo stack e quindi sforando questi confini è possibile sovrascrivere l'indirizzo di ritorno della funzione sullo stack, in modo da fare eseguire del codice alla tua applicazione.
codice:
void get_input(char* name)
{
  char tmp[16];

  strcpy(tmp, name);

  ...
  /* processa tmp */
  ...
}
tra l'altro, ecco perchè anche strcpy è sconsigliata, di solito gcc da dei warning proprio in questo senso