Wenn Sie eine .bat- oder .cmd-Datei mit " %0|%0
inside" ausführen, verbraucht Ihr Computer viel Speicher und wird nach einigen Minuten neu gestartet. Warum blockiert dieser Code Ihr Windows? Und was macht dieser Code programmgesteuert? Könnte es als "Fehler" angesehen werden?
windows
command-line
Doon
quelle
quelle
Antworten:
Dies ist die Windows-Version einer Gabelbombe .
%0
ist der Name der aktuell ausgeführten Batchdatei. Eine Batchdatei, die nur diese Zeile enthält:Wird sich für immer rekursiv ausführen, schnell viele Prozesse erstellen und das System verlangsamen.
Dies ist kein Fehler in Windows, es ist nur eine sehr dumme Sache, in einer Batch-Datei zu tun.
quelle
.bat
Datei tut, ist: Leseanweisung , am Ende der Datei beenden. Wenn Sie% 0 ausführen: Prozess 1: wird gestartet, führen Sie% 0 aus (erstellen Sie also Prozess 2). dann sterben Prozess 2: startet, führe% 0 aus (also erstelle Prozess 3); dann stirb [...] du hast immer höchstens 2 Prozesse ausgeführt, weil der Schöpfer sterben wird. Der Punkt der Gabelbombe ist es, 2 Versionen zu erstellen. Somit erzeugt P1 2 Prozesse (1 'und 1 "), diese beiden Prozesse erzeugen jeweils 2 (also 4), die exponentiell verlaufen.Dies ist als Gabelbombe bekannt. Es teilt sich so lange auf, bis es keine andere Möglichkeit gibt, als das System neu zu starten. http://en.wikipedia.org/wiki/Fork_bomb
quelle
$0; $0
(funktioniert in Bash und Zsh, getestet auf Ubuntu 14.04)Was es ist:
%0|%0
ist eine Gabelbombe . Es wird ein weiterer Prozess mithilfe einer Pipe erzeugt,|
die asynchron eine Kopie desselben Programms ausführt. Dies belastet die CPU und den Speicher und verlangsamt das System bis zum Stillstand (oder stürzt sogar das System ab).So funktioniert das:
%0
bezieht sich auf den Befehl zum Ausführen des aktuellen Programms. Zum Beispiel,script.bat
Ein Pipe-
|
Symbol gibt die Ausgabe oder das Ergebnis der ersten Befehlssequenz als Eingabe für die zweite Befehlssequenz aus. Im Fall einer Gabelbombe gibt es keine Ausgabe, daher wird einfach die zweite Befehlssequenz ohne Eingabe ausgeführt.Das Beispiel zu erweitern
%0|%0
könnte bedeutenscript.bat|script.bat
. Dies wird von selbst erneut ausgeführt, es wird jedoch auch ein anderer Prozess erstellt, um dasselbe Programm erneut auszuführen (ohne Eingabe).quelle
Es ist eine Logikbombe, die sich ständig neu erstellt und alle CPU-Ressourcen beansprucht. Es überlastet Ihren Computer mit zu vielen Prozessen und zwingt ihn zum Herunterfahren. Wenn Sie eine Batch-Datei damit erstellen und starten, können Sie sie mit taskmgr beenden. Sie müssen dies ziemlich schnell tun, sonst ist Ihr Computer zu langsam, um etwas zu tun.
quelle