Как я могу заставить Windows зависать (замораживать)?

Мне нужно проверить поведение оборудования в том случае, если Windows hard зависает /зависает (например, замороженный экран, не мигает светодиод, не реагирует на входные данные, в том числе Ctrl + Alt + Del и т. д.). Чтобы иметь достаточно экспериментов за достаточно короткое время, мне нужно инициировать эти зависания либо программно, либо иначе.

Меня особенно интересует Windows 10 , но любой рабочий способ для других версий оценивается.

Каждый поиск, который я сделал по этой теме, не вызывает удивления в дискуссиях о том, как устранить эти ситуации, а не спровоцировать их. Поэтому вопрос может показаться довольно странным.

Обратная связь: Я пробовал много рецептов , предлагаемых в ответах и ​​комментариях. Прежде всего, меня не интересовали сбои, которые принесли BSoD (вот почему я описал замораживание, а не крушение).

Я должен признать, что 64-разрядная версия Windows 10 продемонстрировала хорошее сопротивление многим. Он справляется практически с любым CPU-load методом (включая fork-bomb , петлями и т. Д.) Достаточно хорошо. Методы, которые приводят к немедленным ошибкам (большинство методов предотвращения NotMyFault), обрабатываются ОС при перезагрузке или завершении работы (это не то, что я преследовал). Наилучшие результаты были достигнуты с помощью утечки памяти методов NotMyFault - реального замораживания без каких-либо шансов перезагрузки.

Наконец, я был впечатлен количеством документации Microsoft, которая говорит о том, что Windows замораживает. Похоже, они знают эту часть намного лучше, чем наоборот (борьба замирает); -)

180 голосов | спросил hypers 2 42017vEurope/Moscow11bEurope/MoscowThu, 02 Nov 2017 11:03:23 +0300 2017, 11:03:23

13 ответов


230

Может быть, это может помочь: Форсирование системы Сбой с клавиатуры

  

С USB-клавиатурами вы должны включить инициированный клавиатурой сбой в   реестра. В разделе реестра   HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters,   создайте значение с именем CrashOnCtrlScroll и установите его равным   REG_DWORD значение 0x01.

     

Вы должны перезагрузить систему, чтобы эти настройки вступили в силу.

     

После того, как это будет завершено, сбой клавиатуры может быть инициирован с помощью   следующую последовательность горячих клавиш: удерживайте нажатой клавишу CTRL справа и   дважды нажмите кнопку SCROLL LOCK.

Или вы можете запустить вилку бомбы: см. этот вопрос SO

Существует также NotMyFault

  

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

ответил duenni 2 42017vEurope/Moscow11bEurope/MoscowThu, 02 Nov 2017 11:29:32 +0300 2017, 11:29:32
25

Похоже, вы проверяете реакцию внешнего устройства на ОС, не реагируя на него.

Если ваше оборудование может быть подключено к виртуализированной установке Windows, вы можете приостановить и возобновить виртуальную машину столько раз, сколько захотите. Установите желаемую ОС в среду VirtualBox (или другую виртуализацию на рабочем столе), покажите, какой аппаратный интерфейс используется (USB, Ethernet или что-то еще) для виртуальной машины.

Вы можете приостановить и возобновить виртуальную машину по своему усмотрению.

ответил barbecue 5 72017vEurope/Moscow11bEurope/MoscowSun, 05 Nov 2017 06:16:58 +0300 2017, 06:16:58
24

По крайней мере, в старой версии Windows (несколько лет назад) работало:

Я написал программу C с бесконечным циклом:

while(1) {}

... тогда я дал эту программу «приоритет в реальном времени» в диспетчере задач (есть также API, который может это сделать).

В многоядерной системе мне нужно будет делать это несколько раз, чтобы один цикл работал на каждом ядре ...

ответил Martin Rosenau 2 42017vEurope/Moscow11bEurope/MoscowThu, 02 Nov 2017 14:55:28 +0300 2017, 14:55:28
10

Самое сильное зависание ядра (т. е. отслеживание мыши и т. д.) - это когда код переходит в бесконечный цикл в режиме ядра с прерываниями.

Это можно сделать с помощью драйвера устройства, и даже лучше, вы можете написать драйвер так, чтобы он запускался и останавливал зависание под вашим контролем (при условии, что бесконечный цикл проверяет состояние, которым вы управляете).

Как написать и установить этот драйвер будет тема другого вопроса или трех, но это тот подход, который я бы принял.

ответил Dylan McNamee 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 22:26:06 +0300 2017, 22:26:06
9

Пожалуйста, проверьте следующий вопрос в StackOverflow, который похож на ваш: Как сделать замораживание окон на короткий период времени

Его tl; dr состоит в том, что нет возможности (надежно) сделать это.

Вместо того, чтобы замерзать или заставить Windows зависать, возможно, вы можете просто прервать связь с вашим оборудованием.

Я понятия не имею, что такое ваше оборудование и как вы его подключаете. Если это USB или адаптер Ethernet, например, вы можете легко отключить его в Диспетчере устройств или отключить от сети? Если вы сильно разрушите или повесьте систему, вы можете повредить систему различными способами, поэтому будьте осторожны с тем, что вы делаете.

ответил Ralf 2 42017vEurope/Moscow11bEurope/MoscowThu, 02 Nov 2017 11:15:23 +0300 2017, 11:15:23
5

Является ли режим отладки ядра не параметром?

Я установил его в Windows 7, и связанные инструкции в этом ответе указывают XP или новее, поэтому он должен работать с Windows 10.

Я настроить его по FireWire /1394 , так как это самый простой, на мой взгляд. Но вы также можете сделать он по сети или USB больше ).

В принципе,

Настройте целевой компьютер, выполнив эти команды в расширенном приглашении (выберите канал n):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

То же самое, что и переход на вкладку загрузки msconfig и выбор кнопки «Дополнительно»:

 введите описание изображения здесь>> </a> </p>

<p> <a href= введите описание изображения здесь>> </a> </p>

<p> Затем (после перезагрузки целевого компьютера) запустите WinDbg на главном компьютере, используя ту же битву WinDbg целевого компьютера. </p>

<p> Тогда это просто вопрос приостановки выполнения ядра, когда вы хотите с главного компьютера. Если вы тестируете оборудование, имеет асинхронную операцию, в которой он работает, он должен быть таким же эффективным, как и другие средства. </p></body></html>

ответил Nick 8 32017vEurope/Moscow11bEurope/MoscowWed, 08 Nov 2017 22:47:40 +0300 2017, 22:47:40
2

Я не знаю, относится ли это к полному замораживанию, потому что курсор мыши по-прежнему перемещается по экрану, но пользовательский интерфейс Windows 7 становится невосприимчивым, если у вас есть ошибки ввода-вывода устройства, в частности, сбой жесткого диска. Один из моих жестких дисков - самообследование о неизбежном отказе накопителя через SMART, и Windows 7 смонтировала его, но зависала всякий раз, когда я пытался получить доступ к определенным файлам, сохраненным на нем. Пользовательский интерфейс блокируется (за исключением движения курсора мыши) до 5 минут, пока он не сможет прочитать файл или отключить диск после тайм-аута. Я не знаю, использует ли Windows системные часы для таймаута, но может быть, если вы каким-то образом заморозите время, когда вы можете увеличить длину таймаута? Возможно, это поможет вам разобраться, но не на 100% ответ, который вы ищете.

ответил Dotes 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 16:52:11 +0300 2017, 16:52:11
2

Эта ошибка задерживает Windows довольно быстро из-за ресурса утомительно. Легко воспроизводится.

  

Как оказалось, это на самом деле а   ошибка   в том, как командная строка (более конкретно cmd.exe) анализирует пакет   файлов и может привести к быстрой атаке типа отказа в обслуживании; сдачи   следующая строка в пакетном файле (без новых строк) будет потреблять   огромные объемы памяти очень быстро из-за этой ошибки (как   пример):

^ nul<^
     

Короче говоря, когда каретка находится в конце файла, фактический   конец файла «игнорируется», а дескриптор файла «reset» равен 0   (по существу), так что партия анализируется снова (до бесконечности).

ответил beatcracker 8 32017vEurope/Moscow11bEurope/MoscowWed, 08 Nov 2017 16:57:35 +0300 2017, 16:57:35
2

Вот исходный код приложения, которое я использую в своих уроках отладки. Он показывает, как приложение пользовательского режима может выполнять своего рода DoS-атаку.

Вы заметите, что курсор мыши перемещается очень редко (один раз каждые одиннадцать секунд на моей машине). Потенциально ваш компьютер все равно будет реагировать на кнопку питания, если вы подождете достаточно долго.

Он работает с бесконечным циклом и устанавливает самый высокий приоритет для процесса (0x100 "realtime") и устанавливает наивысший приоритет для потоков (15 "). «). Он запустит 8 из них, чего достаточно для i7 компьютеров. Если вам нужно больше, адаптируйте цикл. Больше из них потенциально замедлит больше.

#include "stdafx.h"
#include <windows.h>
#include <string>
#include <sstream>
#include <iostream>

void WasteTime()
{
    int priority = 15;
    ::SetThreadPriority(::GetCurrentThread(), priority);
    while (true)
    {
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    ::SetPriorityClass(::GetCurrentProcess(), 0x100);
    for(int i=0; i<7; i++)
    {
        LPDWORD threadid = 0;
        ::CreateThread(NULL, 64*1024, (LPTHREAD_START_ROUTINE)&WasteTime, NULL, 0, threadid);
        ::Sleep(2000);
    }

    WasteTime();

    return 0;
}
ответил Thomas Weller 8 32017vEurope/Moscow11bEurope/MoscowWed, 08 Nov 2017 21:22:18 +0300 2017, 21:22:18
0

Вы попробовали утилиту CPUEater , которая входит в комплект с процессом Лассо? Ps. Я не работаю для битов.

ответил beppe9000 12 72017vEurope/Moscow11bEurope/MoscowSun, 12 Nov 2017 21:41:36 +0300 2017, 21:41:36
-2

Если вы действительно хотите повесить свой компьютер, полностью заставив его просто заморозить , просто используйте всю свою ОЗУ и заставьте его в память страницы. Это выйдет за рамки простого замораживания и действительно просто перегрузит то, что вы даже не можете использовать диспетчер задач, даже не с клавиатуры. Даже когда процесс завершается, для восстановления ПК потребуется много времени. (Это лучший!)

Вы можете, например, создать класс с указателем на себя, а в цикле while создать новый экземпляр этого класса навсегда, сохранив каждый новый экземпляр в указателе предыдущего экземпляра. Возможно, добавьте несколько классов или векторов в класс, чтобы быстрее использовать память. Тогда у вас может быть таймер, который выходит из цикла while и деконструирует все; конечно, вам придется немного подождать, чтобы восстановить его.

ответил Andrew 9 42017vEurope/Moscow11bEurope/MoscowThu, 09 Nov 2017 23:46:31 +0300 2017, 23:46:31
-4

Я бы предложил просто создать пакетный файл со следующим кодом:

@echo off
:x
start cmd.exe
start explorer.exe
start calc.exe
start notepad.exe
start iexplorer.exe
start paint.exe
goto x

Это, наверное, самый простой и безопасный способ сделать это. Вы можете заменить имена процессов на любые приложения Windows.

ответил SLimy 4 62017vEurope/Moscow11bEurope/MoscowSat, 04 Nov 2017 01:50:32 +0300 2017, 01:50:32
-10
  1. Перейдите в папку C: \ Windows \ Temp \
  2. Нажмите Ctrl-a для выбора всех
  3. Нажмите Enter
ответил asrhargar 3 52017vEurope/Moscow11bEurope/MoscowFri, 03 Nov 2017 17:44:03 +0300 2017, 17:44:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132