Oltre alle eccellenti risposte concise di @ Larry e @ SteveS, desidero sottolineare un punto molto importante:
Gli studenti sono scettici sul fatto che disattivare stack non eseguibili, disattivare canarini e trasformare off ASLR rappresenta un ambiente realistico.
Si spera che questo sia vero per i sistemi dei tuoi studenti.
Nel resto del mondo, tuttavia, questo è ancora molto comune, sfortunatamente. Oltre alle piattaforme che non li supportano, ci sono sempre prodotti di scarsa qualità che richiedono la disattivazione, versioni precedenti del sistema operativo e anche solo cattive configurazioni errate.
Ancora molto realistico, purtroppo.
Oltre a tutto ciò, altri 2 commenti da un punto di vista educativo:
1. qualcuno deve costruire quelle difese, giusto?
2. Anche se ipoteticamente avessero ragione - hai solo bisogno di puntatori in C / C ++
non significa che uno sviluppatore Java non dovrebbe imparare come funzionano queste cose, all'interno del computer, giusto?