Как сделать фейк синий экран

Обновлено: 03.07.2024

Текст, заголовок и три кнопки

Программа даёт вам значительный контроль над дизайном диалогового окна. На главном экране вы можете выбрать тип диалогового окна (вопрос / информация / восклицательный знак / критический / пользовательский), установить свой собственный заголовок и одну или две пользовательские строки текста, включить до трёх кнопок с вашим собственным текстом для каждого, а также выбрать подходящий предустановленный значок (“заблокирован”, “предупреждение”, “низкий уровень заряда батареи” и т.д.) или определить свой собственный.

Вызов синего экрана

Вместо выводов: 😉 если вы хотите подшутить над кем то, то Windows Error Message Creator-отличный способ заставить пользователей понервничать! Но будьте осторожны, если пользователь подумает, что произошло что – то катастрофическое – например, настоящий BSOD – то, возможно, попытается перезагрузить систему кнопкой ресет, и из-за этого могут потеряться какие либо данные. Не используйте это, если вы не собираетесь быть рядом и внимательно наблюдать.

Однажды один знакомый рассказал мне про одну уязвимость в Windows. А именно из-за нее можно легко вызвать синий экран смерти шестью строчками кода на Си. Причем программа не требует никаких прав администратора и вызывает только одну функцию масштабирования окна.



Немного теории

Например, в этом коде деление на ноль — недопустимая инструкция.

Если скомпилировать этот код без оптимизации, то мы увидим то самое окно о прекращении работы программы (конечно, компилятор выдаст warning).

Если же выполняется недопустимая инструкция в ядре системы, то все немного интереснее: мы увидим синий экран.

INT_MIN / -1

Есть еще одна исключительная инструкция — деление INT_MIN на -1.
Дело в том, что INT_MIN=−2,147,483,648=-2 31 , а INT_MAX=2,147,483,647=2 31 -1. Довольно очевидно, почему они отличаются на единицу: невозможно в int запихнуть ноль, множество положительных чисел и множество отрицательных чисел так, чтобы количество положительных и отрицательных чисел было равно.
Получается, при делении INT_MIN на -1 результат не умещается в int и процессор бросает исключение.

Следующий код, скомпилированный без оптимизации, вызывает исключительную инструкцию:

Ядро Windows

В ядре Windows принято не использовать переменные с плавающей точкой. Прямо вообще-вообще не использовать. Поэтому когда приходится работать с чем-то нецелым, используют две целочисленные переменные: числитель и знаменатель.
Также для увеличения производительности некоторые WinAPI функции, вызываемые программой, выполняются в ядре системы. Пример такой функции — ScaleWindowExtEx. Она ничего особенного не делает — функция масштабирует окно.
Прототип функции:

Сама программа

Отлично, это то, что нам нужно. Второй и третий параметры, четвертый и пятый параметры — это как раз числитель и знаменатель.
Xnum / Xdenom — масштабирование по x.
Ynum / Ydenom — масштабирование по y.
Но функция не всегда делит одно число на другое. Функция будет делить одно число на другое в случае, если разметка контекста рисования (device context) располагается справа налево. В противном случае она, видимо, будет перед делением как-то менять эти числа. Чтобы поменять разметку контекста, есть функция SetLayout.
Значит, создаем контекст рисования вызовом CreateCompatibleDC (NULL). Устанавливаем разметку контекста с помощью SetLayout. После чего вызываем функцию ScaleWindowExtEx с нужными параметрами.
Конечно, программисты Майкрософт не полные дебилы проверяют деление на ноль, и передачей третьим параметром числа ноль Windows не уронишь.
Но вот деление INT_MIN на -1 они не проверяют. Из-за чего происходит необработанное исключение в ядре системе, что приводит к синему экрану.
Такой код программы при добавлении библиотеки gdi32.lib уронит Windows:

Его можно подсократить до шести строчек для добавления пафосного заголовка:

Тут INT_MIN заменен на -2147483648, чтобы не добавлять лишнюю строчку, подключая файл limits.h. Конечно, можно код сократить до двух строчек, но тогда он уже будет совсем нечитабелен. Да и все функции на Си всегда можно сократить в одну очень-очень длинную строчку.

Система падает на Windows Vista, 7 и 8. Баг наблюдался как на 32-разрядной системе, так и на 64-разрядной (хотя на 64-разрядной не всегда этот баг наблюдается).

Тролинг над игроками Вводите команду /bsod логин игрока После этого у него вылазит синий экран смерти

Бессмертие Для Авто (GM)

Бессмертие Для Авто (GM)

/gmon Включить Бессмертие /gmoff Выключить Бессмертие Специально для Сервера БПАН/BPAN [Анти-Сток]

Вы можете его связать с остальными скриптами, для вывода используйте outputDraw( text )

От Superski за 14.04.2017 в 09:17 Да лучше бы под материнскую плату сделали "Ошибка материнской и т.д" + автор не ты


Как сообщается, эта ссылка не открывает сайт, а указывает браузеру попытаться просмотреть внутреннюю файловую систему PC. Такая возможность по умолчанию есть во всех основных браузерах.

При этом первые эксперименты просто вызывали BSoD, однако повторение такой ошибки несколько раз привело к бесконечной перезагрузке с попыткой автоматического восстановления. Так что не повторяйте это дома или на работе.

Сама ссылка выглядит так (вводить без кавычек):

Читайте также: