Frage von WuScHeLXD, 92

Programm zum Absturz programmieren?

Ich bin ein großer Fan von Five Nights at Freddy's. Ein Computerspiel, in dem das Erscheinen von Golden Freddy das Spiel nicht beendet sondern abstürzen lässt. Nun hab ich mich gefragt, wie es möglich ist, ein Programm gezielt zum Absturz zu bringen. Gibt es dafür spezielle Störcodes, die hineingeschrieben werden müssen, oder kann man durch irgendwelche Schleifen oder so das Programm überlasten, sodass es den Dienst versagt? Oder (falls sich jemandem mit dem Spiel konkret auskennt) sieht es in dem Fall nur so aus, als ob das Spiel abstürzt wobei es in Wahrheit nur ein speziell gestalteter Bildschirm ist?

Expertenantwort
von TeeTier, Community-Experte für programmieren, 83

Ja, ...

Es gibt unendlich viele einfache Möglichkeiten, ein Programm zum Absturz zu bringen.

Beispiel in C / C++:

*(int*)0 = 123;

Oder so:

free(123);

Plattformspezifisch auf *ix-Systemen:

kill(getpid(), SIGILL);

Oder allgemein:

int x = (int)(sqrt(2) - 1.0);
int y = 123 / x;

Und so weiter, und so fort ... es gibt noch TAUSEND mal mehr Möglichkeiten! Irgendwie kann man immer jede Form von Fehler provozieren, und für Software-Tests ist das manchmal sogar bewusst erwünscht.

Die Beispiele, welche ich oben aufgelistet habe, sollte jeder Programmierer nachvollziehen können. Dabei sollte jedes Programm abstürzen.

Man kann auch noch schwerere Fehler im Betriebssystem auslösen, sodass du eine Kernelpanic oder einen Bluescreen bekommst.

Schönen Tag noch, und viel Spaß mit deinem neu erworbenen Wissen! :)

Kommentar von WuScHeLXD ,

Ja, dann dürfte es so ein schwerer Fehler sein, denn nachdem, was ich gesehen habe, kommt dann so ein Bluescreen. Man muss das Spiel dann jedenfalls neu starten.

Antwort
von Timster292, 92

Ich denke, dass man im Code ganz einfach einen Befehl zum Beenden einbauen kann. So wie es auch funktioniert, wenn man im Menü den Beenden Button drückt, nur eben das anstatt dem Knopf etwas anderes, hier der goldene Freddy, den Befehl auslöst.

Kommentar von PWolff ,

Etwas, das dem Menü "Beenden" entspricht, lässt sich leicht einbauen.

Aber mit einem entsprechenden Systemaufruf kann man das Programm auch sofort beenden, auf die brutale Art. Dieser Aufruf ist auch vom Programm selbst möglich.

Keine passende Antwort gefunden?

Fragen Sie die Community