«Убить» компьютер, вызвав сгорание его аппаратуры, скорее всего, невозможно, если компьютер качественно собран и имеет соответствующую тепловыделению систему охлаждения. В девяностые годы было много страшилок про вирусы, протиравшие дырку в жестком диске (вроде того, что он дергал головку между дорожками туда-сюда и протирал в поверхности диска дыру — чушь, потому что в жестком диске головка диска не касается), прожигавшие дыру в экране монитора (в различных вариантах — взрывавшие монитор или облучавшие пользователя смертельной дозой рентгена). Позже появился и более реальный вариант «вируса-убийцы» — когда BIOS стал «жить» не в УФ-стираемой микросхеме EPROM, а во флеш-памяти, появилась возможность уничтожить ее содержимое программно (что впоследствии и эксплуатировалось в Win95.CIH, он же «Чернобыль»). Данная возможность сохраняется и во всех новых компьютерах, но такое «убийство» является обратимым — правда, на многих современных материнках для восстановления требуется выпаивать из платы микросхему флеш-памяти.
Как убить Windows 7/8/10 без возможности восстановления!
В дальнейшем появилась новая уязвимость — тактовые частоты и напряжения питания процессора, памяти и других ключевых элементов компьютера стали доступны для программного изменения. Однако, «убийство» было возможно только на заре этого нововведения — теперь же этого эффекта добиться весьма трудно, компьютер скорее просто не запустится с опасно завышенными напряжениями и частотами, после чего перезагрузится с настройками «по умолчанию». Ничего не выйдет даже если программным путем отключить кулеры и запустить код, нагружающий процессор на 100% — это приведет лишь к срабатыванию термозащиты — произойдет снижение тактовой частоты либо принудительное отключение.
Таким образом, надежного способа «убить» компьютер программно не существует, и для луддитов остается только грубая сила — топор или электрошокер.
Источник: www.bolshoyvopros.ru
Как уронить Windows шестью строчками кода
Однажды один знакомый рассказал мне про одну уязвимость в Windows. А именно из-за нее можно легко вызвать синий экран смерти шестью строчками кода на Си. Причем программа не требует никаких прав администратора и вызывает только одну функцию масштабирования окна.
Немного теории
В случае недопустимой инструкции процессор бросает исключение, а ОС уже сама решает, что с этим делать. Если это ошибка в программе и она никак не обрабатывается, то система выдает всем известное сообщение о том, что прекращена работа программы.
Например, в этом коде деление на ноль — недопустимая инструкция.
#include int main() < int a = 2 / 0; printf («%d», a); return 0; >
Если скомпилировать этот код без оптимизации, то мы увидим то самое окно о прекращении работы программы (конечно, компилятор выдаст warning).
Как убить Android за 30 секунд?
Если же выполняется недопустимая инструкция в ядре системы, то все немного интереснее: мы увидим синий экран.
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 и процессор бросает исключение.
Следующий код, скомпилированный без оптимизации, вызывает исключительную инструкцию:
#include #include int main() < int a = INT_MIN; int b = -1; int c = a / b; printf («%d», c); return 0; >
Ядро Windows
В ядре Windows принято не использовать переменные с плавающей точкой. Прямо вообще-вообще не использовать. Поэтому когда приходится работать с чем-то нецелым, используют две целочисленные переменные: числитель и знаменатель.
Также для увеличения производительности некоторые WinAPI функции, вызываемые программой, выполняются в ядре системы. Пример такой функции — ScaleWindowExtEx. Она ничего особенного не делает — функция масштабирует окно.
Прототип функции:
BOOL ScaleWindowExtEx( _In_ HDC hdc, _In_ int Xnum, _In_ int Xdenom, _In_ int Ynum, _In_ int Ydenom, _Out_ LPSIZE lpSize );
Сама программа
Отлично, это то, что нам нужно. Второй и третий параметры, четвертый и пятый параметры — это как раз числитель и знаменатель.
Xnum / Xdenom — масштабирование по x.
Ynum / Ydenom — масштабирование по y.
Но функция не всегда делит одно число на другое. Функция будет делить одно число на другое в случае, если разметка контекста рисования (device context) располагается справа налево. В противном случае она, видимо, будет перед делением как-то менять эти числа. Чтобы поменять разметку контекста, есть функция SetLayout.
Значит, создаем контекст рисования вызовом CreateCompatibleDC (NULL). Устанавливаем разметку контекста с помощью SetLayout. После чего вызываем функцию ScaleWindowExtEx с нужными параметрами.
Конечно, программисты Майкрософт не полные дебилы проверяют деление на ноль, и передачей третьим параметром числа ноль Windows не уронишь.
Но вот деление INT_MIN на -1 они не проверяют. Из-за чего происходит необработанное исключение в ядре системе, что приводит к синему экрану.
Такой код программы при добавлении библиотеки gdi32.lib уронит Windows:
#include #include int main()
Его можно подсократить до шести строчек для добавления пафосного заголовка:
#include int main()
Тут INT_MIN заменен на -2147483648, чтобы не добавлять лишнюю строчку, подключая файл limits.h. Конечно, можно код сократить до двух строчек, но тогда он уже будет совсем нечитабелен. Да и все функции на Си всегда можно сократить в одну очень-очень длинную строчку.
Система падает на Windows Vista, 7 и 8. Баг наблюдался как на 32-разрядной системе, так и на 64-разрядной (хотя на 64-разрядной не всегда этот баг наблюдается).
P.S. Раньше с помощью такой недопустимой инструкции можно было убить bash, но сейчас это исправили.
UPDATE1: Изменил ((int) 0x8000/0x80000000) на (-2147483647 — 1), теперь должно работать. Спасибо, AndreyDmitriev и alper.
UPDATE2: Microsoft исправила эту уязвимость.
UPDATE3: Ссылка на статью «первооткрывателя»: blog.cmpxchg8b.com/2013/02/the-other-integer-overflow.html.
- Информационная безопасность
- C
Источник: habr.com
Как за пару минут «убить» Windows?
Добрый день, судя по заголовку вы зашли сюда, что бы ознакомиться с различными вариантами, как довольно быстро поломать систему, да так что бы на восстановление/переустановку ушло приличное количество времени.
- Мы тут не занимаемся противоправными штуками, мы изучаем как это работает и проверяем на практике, не советую применять на своем компьютере или на компьютере друга/в школе и так далее . ( если и будете пробовать, пробуйте на виртуальной системе ).
Ну и поехали!
Первый способ довольно простой , вам понадобится доступ в » Реестр «, нужно пройти по следующему пути к ветке:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionAuthenticationCredential Providers
Среди записей вам нужно найти ветку в которой будет строчное значение » PasswordProvider «, как только его нашли, эту ветку удаляем и уходим на перезагрузку.
Как итог получаем, Winlogon без поставщика паролей, при этом на учетной записи могло и не быть этого пароля, но Windows этот параметр нужен, что спросить, был пароль или нет, и отдать ответ о запуске системы и так далее, ну и скрин итог таких манипуляций ниже:
Как мы видим пользователей нет, и ничего не загрузится, однако с безопасного режима зайти можно, но пользоваться компьютером с безопасного режима толком не выйдет, функции ограничены.
Такое нападение убьет прилично времени, на восстановление настроек системы, даже элементарно через » Вернуть к исходному состоянию «. Приложения либо удалятся, либо собьются настройки. К слову от таких манипуляций спас бы » Shadow Defender «.
Можно и за минуту уложиться, процедура довольно простая.
Аналог этого способа только полегче, можно удалить все ветки в разделе
HKEY_CURRENT_USER
Все удалить не удастся, но которые даст удалить удаляем и после перезагрузки, система не сможет запуститься/восстановиться.
Второй способ — долгий , но после него возврат в исходное состояние не помогает, в зависимости от жесткого диска операция может занять 10-60 минут.
Нужно открыть » Командую строку » от администратора .
И вбить поочередно команды:
Если система стоит на другом разделе например диск D: , то следует заменить «C:» на «D:» , без кавычек разумеется.
После уходим на перезагрузку, и восстановить такую систему проще всего именно переустановкой, однако, если у вас на компьютере установлен Shadow Defender , то проблем никаких не случится, компьютер просто перезагрузите и все удаленные файлы, будут восстановлены. Но Shadow Defender используется крайне редко, и в основном, для того что бы user не убил систему, дабы не прибавлять лишней работы.
Третий способ , вам понадобится зайти в Биос и найти настройки переключения режима работы SATA , называться они могут по разному » SATA Mode» «SATA Emulation» «Storage options» , там в зависимости от параметра который стоял, нужно сменить на противоположный, так например стоял параметр » IDE «, нужно поставить » AHCI » и наоборот » AHCI » на » IDE «, после такой манипуляции сохраняете изменения и Windows не сможет запуститься.
В случае если у вас не запускается система, после сброса биоса, вполне вероятно что нужно аналогично как и тут выставить правильный режим работы SATA.
Операционная система как таковая остается, но запустить ее без знаний где искать и что лечить, не получится.
Четвертый способ , удаление системных файлов в частности » hal.dll » данный файл можно найти в папке » C:WindowsSystem32 «, удалить просто так его не выйдет, сперва придется переписать права на доступ, либо воспользоваться утилитой » Unlocker «, после перезапуска система не сможет загрузиться, из-за того что нет этого файла.
Пятый способ — долгий, выбираем папку Windows заходим в » свойства «, переходим в вкладку » Безопасность «, далее нажимаем » Дополнительно » сверху где написано владелец изменяем его на имя пользователя, и применяем, далее нажимаем » заменить владельца подконтейнеров и объектов » и жмем » ок «, какие то права он переписать не сможет и ничего страшного, основную группу файлов он перепишет и система перестанет работать корректно. Может отвалиться интернет/звук/драйвера и вовсе система может не запуститься после такого действия .
Обуславливается это все тем, Windows принимает файлы только от доверенного установщика, дабы никакой подлец не мог подкинуть файл и сказать системе бери да используй его, поэтому вирусы находятся в системных файлах, потому как их максимально пытаются спрятать.
Данные способы сработают везде. По крайней мере во время тестов сработали.
Источник: dzen.ru