Si vous exécutez un fichier .bat ou .cmd avec l'option %0|%0
à l'intérieur, votre ordinateur commence à utiliser beaucoup de mémoire et, après plusieurs minutes, il est redémarré. Pourquoi ce code bloque-t-il votre Windows ? Et que fait ce code par programmation ? Peut-il être considéré comme un "bug" ?
Réponses
Trop de publicités?Il s'agit de la version Windows d'un bombe à fourche .
%0
est le nom du fichier batch en cours d'exécution. Un fichier batch qui ne contient que cette ligne :
%0|%0
va s'exécuter de manière récursive à l'infini, créant rapidement de nombreux processus et ralentissant le système.
Il ne s'agit pas d'un bogue dans Windows, mais d'une chose très stupide à faire dans un fichier batch.
C'est ce que l'on appelle une bombe à fourche. Elle continue à se diviser jusqu'à ce qu'il n'y ait plus d'autre choix que de redémarrer le système. http://en.wikipedia.org/wiki/Fork_bomb
Ce que c'est :
%0|%0
es un bombe à fourche . Il créera un autre processus à l'aide d'un tuyau |
qui exécute une copie du même programme de manière asynchrone. Cela monopolise l'unité centrale et la mémoire, ralentissant le système au point de le rendre presque inopérant (voire de le faire planter).
Comment cela fonctionne-t-il ?
%0
fait référence à la commande utilisée pour exécuter le programme en cours. Par exemple, script.bat
Un tuyau |
fera de la sortie ou du résultat de la première séquence de commandes l'entrée de la deuxième séquence de commandes. Dans le cas d'une bombe à fourche, il n'y a pas de sortie, donc elle exécutera simplement la deuxième séquence de commandes sans aucune entrée.
Élargir l'exemple, %0|%0
pourrait signifier script.bat|script.bat
. Il s'exécute à nouveau, mais crée également un autre processus pour exécuter à nouveau le même programme (sans aucune entrée).
C'est une bombe logique qui se recrée sans cesse et qui utilise toutes les ressources de l'unité centrale. Il surcharge votre ordinateur avec trop de processus et le force à s'éteindre. Si vous créez un fichier batch avec ce programme et que vous le démarrez, vous pouvez l'arrêter en utilisant taskmgr. Vous devez le faire assez rapidement ou votre ordinateur sera trop lent pour faire quoi que ce soit.