Bei vielen Anwendungsabstürzen - nicht bei allen, aber bei vielen - führt der Computer etwas aus, das er nicht haben sollte. Die Maschine springt in etwas, von dem sie glaubt, dass es Code sein soll, aber es sind tatsächlich auf Null gesetzte oder zufällige Daten (oder zumindest Daten, die nicht als Code vorbereitet wurden). Die Maschine versucht, diese Daten als Code zu betrachten, aber als Code macht dies keinen Sinn, sodass die Maschine nicht weiß, was zu tun ist. In diesem Fall stürzt die Anwendung ab.
Bei Fehlern ist es jedoch wichtig, dass Sie sie absichtlich auslösen können, wenn Sie wissen, wie sie ausgelöst werden. Abhängig von der Funktionsweise des Fehlers können Sie manchmal sogar steuern, in welche Daten die Maschine springt. Diese Möglichkeit macht Sicherheitsleute nervös: Wenn Sie die Maschine dazu bringen können, in Daten zu springen, die keinen Sinn ergeben, und Sie steuern können, was diese Daten sind, können Sie die Maschine dazu bringen, in etwas zu springen, das macht Sinn. Sobald Sie diese Einstellungen vorgenommen haben, können Sie den Computer dazu bringen, mehr oder weniger alles zu tun, was Sie möchten.
Nicht jeder Anwendungsabsturz funktioniert auf diese Weise. Die Antwort von @ AliAhmad zeigt die Grundlagen, wie man sagt, was kann und was nicht. Da die Folgen eines unsicheren Absturzes jedoch so schwerwiegend sein können, muss jeder Absturz überprüft werden, um festzustellen, ob er "sicher" ist oder nicht.