Що таке% 0 |% 0 і як це працює?


77

Якщо ви запустили файл .bat або .cmd із %0|%0внутрішньою поверхнею , ваш комп’ютер починає використовувати багато пам'яті і через кілька хвилин перезавантажується. Чому цей код блокує вашу Windows? І що цей код робить програмно? Чи можна це вважати "помилкою"?


1
Можливий дублікат бомбової вилочної бомби?
Cerbrus

Відповіді:


140

Це версія для вилки-бомби для Windows .

%0- це ім'я поточно виконуваного пакетного файлу. Пакетний файл, який містить лише цей рядок:

%0|%0

Збирається виконувати себе назавжди назавжди, швидко створюючи багато процесів і сповільнюючи роботу системи.

Це не помилка у вікнах, це просто дуже дурне, що потрібно робити в командному файлі.


7
Чому% 0 |% 0 ламає вікна, а% 0 ні?
Павло

14
@Pavel: Що .batробить файл, так це: інструкція читання в кінці файлу завершується. Якщо ви запускаєте% 0: Процес 1: запускається, запустіть% 0 (таким чином створіть процес 2); потім процес 2: починається, запускається% 0 (таким чином створюється процес 3); тоді померти [...] у вас завжди буде запущено щонайбільше 2 процеси, оскільки творець помре. Сенс вилки-бомби - створити 2 версії. Таким чином, P1 створює 2 процеси (1 'і 1 "), ці два процеси створюватимуть, кожен, 2 (таким чином, 4), які йдуть експоненціально.
pltrdy

38

Це відомо як вилка-бомба. Він продовжує розбиватися, поки не залишається жодної можливості, окрім як перезапустити систему. http://en.wikipedia.org/wiki/Fork_bomb


1
@RohanGala: $0; $0(працює в bash і zsh, протестовано на Ubuntu 14.04)
SilverWolf - Відновити Моніку

Зверніть увагу, що ви можете зупинити це за допомогою ⌃C, вам потрібно буде ігнорувати SIGINT або від'єднати, щоб запобігти цьому. (:
SilverWolf - Відновити Моніку

1
: () {: |: &} ;: одна версія
Андреас

26

Що це:

%0|%0- це вилка-бомба . Він породить інший процес, використовуючи конвеєр, |який асинхронно запускає копію тієї ж програми. Це стримує центральний процесор і пам’ять, сповільнюючи роботу системи майже до зупинки (або навіть збою в роботі системи).

Як це працює:

%0відноситься до команди, яка використовується для запуску поточної програми. Наприклад,script.bat

Труба |символ буде зробити висновок або результат першої послідовності команд в якості вхідних даних для другої послідовності команд. У випадку з вилкою-бомбою вихідного сигналу немає, тому він буде просто запускати другу послідовність команд без будь-якого вводу.

Розширення прикладу %0|%0може означати script.bat|script.bat. Це запускається знову, але також створюється інший процес для запуску тієї ж програми знову (без введення).


6

Це логічна бомба, вона продовжує відтворювати себе і забирає всі ваші ресурси процесора. Це перевантажує ваш комп’ютер занадто великою кількістю процесів і змушує його вимкнутись. Якщо ви створили командний файл з цим і запустили його, ви можете закінчити його за допомогою taskmgr. Ви повинні зробити це досить швидко, інакше ваш комп’ютер буде занадто повільним, щоб щось робити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.