Windows가 정지 (고정)되도록하려면 어떻게해야합니까?


180

Windows 하드 멈춤 / 멈춤 (예 : 화면 정지, LED 깜박임 없음, Ctrl + Alt + Del 등 입력에 대한 반응 없음)이 발생 하는 경우 장비 동작을 테스트해야합니다 . 합리적으로 짧은 시간에 충분한 실험을 수행하려면 프로그래밍 방식으로 또는 다른 방식으로 이러한 중단을 시작해야합니다.

특히 Windows 10 에 관심이 있지만 다른 버전의 작업 방식은 높이 평가됩니다.

이 주제에 대해 내가 한 모든 검색은 놀랍게도 이러한 상황 을 제거 하는 방법에 대한 토론으로 이어지지 않습니다. 따라서 질문이 이상하게 보일 수 있습니다.

피드백 : 답변과 의견에 제공된 많은 레시피를 시도했습니다 . 우선, BSoD를 가져 오는 충돌에 관심이 없었습니다 (그래서 충돌이 아니라 동결에 대해 설명했습니다).

Windows 10 64 비트가 여러 가지 방법에 대해 좋은 저항을 보였다고 고백해야합니다. 거의 모든 CPU로드 방법 ( 포크 폭탄 , 루프 등 포함)에 잘 대처 합니다. 즉각적인 오류를 발생시키는 방법 (대부분의 NotMyFault 중단 방법)은 재부팅 또는 종료 (내가 추구 한 것이 아님)로 OS에 의해 처리됩니다. 최상의 결과는 NotMyFault의 메모리 누수 방법 ( 재부팅 할 필요없이 실제 동결)에 의해 달성되었습니다 .

마지막으로, 저는 Windows가 멈추는 것에 대해 이야기하는 Microsoft의 많은 양의 문서에 깊은 인상을 받았습니다. 그들이이 부분을 정반대보다 훨씬 더 잘 알고있는 것 같습니다 (싸움) ;-)


의견은 긴 토론을위한 것이 아닙니다. 이 대화는 채팅 으로 이동 되었습니다 .
DavidPostill

3
계산기를 사용하여 수행 할 수있는 계산이 있으며, 완료 될 때까지 CPU의 코어를 고정시킵니다. 쿼드 코어 머신에서는 분명히 네 번 할 것입니다. 그러나 나는 내 삶에 그것을 초래하는 수학 방정식을 기억할 수 없습니다.
mickburkejnr

6
@mickburkejnr 100000의 계승입니다. "Scientific View"유형 100000으로 전환하고 "n!"을 누릅니다. 이것은 오래된 Windows 버전에서 잘 작동했습니다. 요즘에는이 계산에 시간이 오래 걸릴 수 있다는 경고 메시지가 표시되며 취소 할 수 있습니다.
duenni

25
사용을 시작하십시오.
samazi

5
업그레이드 설치는 항상 저에게 효과적이었습니다.
Daniel R은

답변:


230

어쩌면 이것이 도움이 될 수 있습니다 : 키보드에서 시스템 충돌 강제하기

USB 키보드를 사용하면 레지스트리에서 키보드 시작 충돌을 활성화해야합니다. 레지스트리 키 HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services \ kbdhid \ Parameters에서 CrashOnCtrlScroll이라는 값을 만들고 REG_DWORD 값 0x01과 동일하게 설정하십시오.

이 설정을 적용하려면 시스템을 다시 시작해야합니다.

이 작업이 완료되면 다음 핫키 순서를 사용하여 키보드 충돌을 시작할 수 있습니다. 가장 오른쪽 CTRL 키를 누른 상태에서 SCROLL LOCK 키를 두 번 누릅니다.

아니면 당신은 포크 폭탄을 시작할 수 있습니다 : 이 SO 질문을 참조하십시오

도 있습니다 NotMyFault

Notmyfault는 Windows 시스템에서 충돌, 정지 및 커널 메모리 누수를 일으키는 데 사용할 수있는 도구입니다. 장치 드라이버 및 하드웨어 문제를 식별하고 진단하는 방법을 배우는 데 유용하며, 잘못 사용하는 시스템에서 블루 스크린 덤프 파일을 생성하는 데 사용할 수도 있습니다.


9
ForkBomb 및 NotMyFault를 시도했습니다. 누출 방법 중 하나가 내가 원하는 것을하는 것 같습니다. 다른 것들은 재부팅 / 정지로 인해 정지되지 않으므로 유용하지 않습니다. 고마워
hypers

6
CtrlScroll은 BSOD를 제공합니다. 디버깅을 위해 시스템을 정지 시킬지 아니면 재부팅 만할지는 부팅 설정에 따라 다릅니다.
grawity

51
내 컴퓨터 근처에는 Aaannnddd duenni가 허용되지 않습니다. 이제까지.
corsiKa

25

외부 장치가 OS에 반응하지 않는 반응을 테스트하는 것처럼 들립니다.

하드웨어를 가상화 된 Windows 설치에 연결할 수 있으면 원하는만큼 가상 컴퓨터를 일시 중지했다가 다시 시작할 수 있습니다. VirtualBox (또는 다른 데스크톱 가상화) 환경에 원하는 OS를 설치하고 사용중인 하드웨어 인터페이스 (USB, 이더넷 또는 기타)를 VM에 노출시킵니다.

그런 다음 원하는 대로 가상 머신 을 일시 중지 했다가 다시 시작할 수 있습니다 .


24

적어도 오래된 Windows 버전 (몇 년 전)에서 다음이 작동했습니다.

나는 끝없는 루프로 C 프로그램을 작성했습니다.

while(1) {}

... 그런 다음 작업 관리자에서 해당 프로그램에 "실시간 우선 순위"를 부여했습니다 (이 작업을 수행 할 수있는 API도 있습니다).

멀티 코어 시스템에서는 각 코어에서 하나의 루프가 실행되도록 여러 번이 작업을 수행해야합니다 ...


39
넣어 : 그 일을하는 동안 CPU가 더 적은 열 _mm_pause()에서 #include <immintrin.h>루프있다. 이것은 CPU 하드웨어 명령이며 어떤 종류의 "슬립"시스템 호출도 아닙니다. OS에 관한 한, 프로세스는 SuperPI와 구분할 수 없습니다. 차이점은 루프를 실행하는 동안 CPU가 소비하는 전력량에 있습니다.
Peter Cordes

5
이것이 커널 모드 부분의 작동을 멈추는 지 확실하지 않습니다.
코드 InChaos

2
@CodesInChaos : 대부분의 커널 스레드는 보통 우선 순위로 실행됩니다. CPU 및 커널 당 이들 중 하나는 거의 수행됩니다.
Joshua

x86 어셈블리 ( STI+ HLT) 와 관련된 또 다른 기술 : stackoverflow.com/questions/3747847/…
meklarian

3
@meklarian :이어야 CLI; HLT합니다. 아마도 권한 모드에서해야 할 것입니다. 원칙적으로 여전히 NMI 또는 이와 유사한 구조로 구할 수 있습니다.
Nate Eldredge

10

가장 강력한 커널 정지 (즉, 마우스 추적 없음)는 코드가 커널 모드에서 인터럽트가 해제 된 상태에서 무한 루프 상태가되는 경우입니다.

장치 드라이버를 사용하여이 작업을 수행 할 수 있으며 더 나은 방법으로 드라이버를 작성하여 제어 하에서 정지를 시작 및 중지 할 수 있습니다 (무한 루프가 제어중인 조건을 테스트한다고 가정).

이 드라이버를 작성하고 설치하는 방법은 또 다른 질문 또는 세 가지 주제 일 것이지만 이것이 내가 취하는 접근법입니다.


9

귀하와 비슷한 StackOverflow에서 다음 질문을 확인하십시오. 단기간 동안 창을 얼리는 방법

그것의 tl; dr은 (신뢰할 수있는) 방법이 없다는 것입니다.

Windows를 정지 시키거나 중단시키는 대신 장비와의 통신을 중단 할 수 있습니다.

장비가 무엇이고 어떻게 연결하는지 모르겠습니다. 예를 들어 USB 또는 이더넷 어댑터 인 경우 장치 관리자에서 쉽게 비활성화하거나 플러그를 뽑을 수 있습니까? 시스템을 강제로 중단 시키거나 중단 시키면 다양한 방법으로 시스템이 손상 될 수 있으므로주의하십시오.


1
소프트웨어 결과가 만족스럽지 않으면 장비의 물리적 분리를 고려할 것입니다. 감사.
hypers

5

커널 디버그 모드가 옵션이 아닙니까?

Windows 7에서 설정 했으며이 답변의 링크 된 지침은 XP 이상을 지정하므로 Windows 10에서 작동합니다.

나는 한 파이어 와이어 / 1394에 그것을 설정 내 생각에 가장 쉬운 방법이기 때문에. 그러나 네트워크USB (및 그 이상 )를 통해서도 할 수 있습니다 .

원래,

관리자 권한 프롬프트에서 다음 명령을 실행하여 대상 컴퓨터를 설정하십시오 (채널 선택 n).

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

의 부팅 탭으로 이동 msconfig하여 '고급'버튼을 선택하는 것과 같습니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

그런 다음 (대상 컴퓨터를 재부팅 한 후) 대상 컴퓨터의 동일한 비트 비트의 WinDbg를 사용하여 호스트 컴퓨터에서 WinDbg를 실행하십시오.

그런 다음 호스트 컴퓨터에서 원할 때마다 커널 실행을 일시 중지하면됩니다. 테스트 장비에 비동기 작업이있는 경우 다른 방법만큼 효과적입니다.


재미있는 방법. 그래도 두 번째 PC가 필요합니다. 그러나 가능하면 시도합니다.
hypers

2

마우스 커서가 여전히 화면에서 움직이기 때문에 이것이 총 정지 상태인지 여부는 알 수 없지만 장치 I / O 오류, 특히 하드 드라이브 오류가 발생하면 Windows 7 UI가 응답하지 않습니다. 내 하드 드라이브 중 하나는 SMART를 통한 자체보고 임박한 드라이브 오류였으며 Windows 7은 마운트하지만 해당 파일에 저장된 특정 파일에 액세스하려고 할 때마다 중단됩니다. UI는 파일을 읽거나 시간 초과 후 드라이브를 분리 할 수있을 때까지 최대 5 분 동안 마우스를 움직이지 않습니다 (마우스 커서 이동 제외). Windows가 시간 초과로 시스템 시계를 사용하는지 모르겠지만 시간을 동결하면 시간 초과 길이를 연장 할 수 있습니까? 어쩌면 이것은 당신에게 약간의 도움을 줄 것이지만, 당신이 찾고있는 대답을 100 %는 아닙니다.


2

이 버그 는 리소스 소모로 인해 Windows를 매우 빨리 정지시킵니다. 재현하기 쉽습니다.

결과적으로 이것은 실제로 명령 줄 (보다 구체적으로 )이 배치 파일을 구문 분석 하는 방법에 있어 버그 이며 cmd.exe, 서비스 거부 공격 유형이 빠르게 발생할 수 있습니다. 다음 줄을 배치 파일에 넣으면 (새 줄 없음)이 버그로 인해 대량의 메모리가 매우 빨리 소비됩니다 (예 :).

^ nul<^

간단히 말해서, 캐럿이 파일의 끝에있을 때 파일의 실제 끝은 '무시'되고 파일 핸들은 '필수'로 0으로 재설정되어 일괄 처리가 다시 구문 분석됩니다 (임의의 무한대).


2

디버깅 레슨에서 사용하는 애플리케이션의 소스 코드는 다음과 같습니다. 사용자 모드 애플리케이션이 일종의 DoS 공격을 수행하는 방법을 보여줍니다.

마우스 커서가 매우 드물게 움직이는 것을 알 수 있습니다 (컴퓨터에서 11 초마다 한 번씩). 오래 기다릴 경우 PC는 여전히 전원 버튼으로 반응합니다.

무한 루프를 사용하여 프로세스의 최우선 순위 ( 0x100"실시간")를 설정하고 스레드에 가장 높은 우선 순위를 설정합니다 ( 15"시간 임계"). i7 컴퓨터에 충분한 8 개를 시작합니다. 더 필요한 경우 루프를 조정하십시오. 더 많은 것들이 잠재적으로 더 느려질 것입니다.

#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;
}

이 프로그램은 C ++에서 정의되지 않은 동작을 가지므로 특정 최적화 설정에서 컴파일러는 모든 것을 다음과 같이 대체 할 수 있습니다.ExitProcess(0)
Ben Voigt

@BenVoigt이 경우 (즉, g++) -O0가 충분하지 않은 경우 gcc -Q -O0 --help=optimizers | grep enabled (및 손으로 잔존하는 최적화를 비활성화) ExitProcess(0)문제를 해결할 수 있습니까?
Hastur

@ BenVoigt : 정교하게 말할 수 있습니까? 정의되지 않은 동작으로 간주하는 부분은 무엇입니까?
Thomas Weller

@BenVoigt IMHO 컴파일러는 return 0명령문 뒤에 만 있기 때문에 명령문을 최적화 할 수만 있습니다 while(true). 컴파일러는 이것이 도달 할 수없는 명령문임을 알 수 있습니다.
Thomas Weller

C ++ 언어는 모든 스레드가 결국 몇 가지 유형의 관찰 가능한 동작으로 정의 된 진행을 요구합니다. 무한 루프는 절대로 눈에 띄는 진행을하지 않기 때문에 컴파일러는 도달 할 수 없다고 추론 할 수있을뿐 아니라 그 코드뿐만 아니라 그 위의 모든 코드를 가장 가까운 분기로 되돌릴 수 있습니다.
벤 Voigt

0

Process Lasso와 함께 제공되는 CPUEater 유틸리티 를 사용해 보셨습니까 ? 추신. 나는 bitum을 위해 일하지 않는다.


나는 "시도 했습니까"가 아니라 "시도 했습니까"를 의미한다고 생각합니다. :)
fabspro

@fabspro OP가 이미 다른 답변을 수락했기 때문에 "시도 했습니까?"라고 생각합니다. "문제 해결"이라는 말은 과거에 있었지만 인터넷은 항상 발생한다고 말할 수 있습니다. 어쨌든, 편집을 제안하면 기꺼이 수락하는 작업을 검토 대기열에 위임합니다. 출처 : englishforums.com/English/HaveYouTriedOrDidYouTry/zclxb/...
beppe9000

만약 그가 문제를 해결했다면, 당신의 질문은 그의 대답에 대한 의견 일 수 있었을 것입니다. "문제를 연구 할 때 _______ 유틸리티를 시도한 것 중 하나였습니까?" 아마 ... 그냥 제안하는 것들 :)
fabspro

... touché :)
beppe9000 1

huehuehuehuehue
fabspro

-2

당신이 경우 정말 완전히 그냥 원인, 당신의 PC를 중지 할 동결 , 단순히 RAM의 모든를 사용하여 페이지 메모리에 강제로. 그것은 단순히 얼어 붙지 않고 키보드로도 작업 관리자를 사용할 수 없도록 오버로드합니다. 프로세스가 종료 되더라도 PC를 복구하는 데 시간이 오래 걸립니다. (그게 제일이야!)

예를 들어 자체 포인터를 사용하여 클래스를 만들고 while 루프에서 해당 클래스의 새 인스턴스를 영원히 만들어 이전 인스턴스의 포인터에 각 새 인스턴스를 저장할 수 있습니다. 더 많은 메모리를 더 빨리 소비하기 위해 클래스에 더블 또는 벡터를 추가 할 수도 있습니다. 그런 다음 while 루프를 종료하고 모든 것을 해체하는 타이머를 가질 수 있습니다. 물론 복구 될 때까지 조금 기다려야합니다.


-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 응용 프로그램으로 바꿀 수 있습니다.


3
이것은 아마도 RAM을 소모하고 하드 드라이브가 쓰러 질 것입니다. 컴퓨터 사양에 따라, 특히 나열된 프로그램 중 4 개가 매우 가벼우 iexplore.exe며 (아마도 explorer.exe더 큰 영향을 미칠 수 있기 때문에) 컴퓨터가 계속해서 작업 할 수 있습니다. 메모리 호깅 프로세스를 자동으로 종료합니다.
MoonRunestar

-10
  1. C : \ Windows \ Temp \로 이동하십시오.
  2. 모두 선택을 위해 Ctrl-a를 누르십시오.
  3. 엔터

8
막연하게 효과를 내려면 수천 가지 항목이 필요합니다! 내 % TEMP % 폴더가 비어 있습니다 ...
AlainD

6
이 질문에 대한 합법적 인 시도 인 것처럼 보이지만 OP가 요청한대로 Windows가 정확히 어떻게 잠기 게 될지는 확실하지 않습니다. 제발 편집 이가 OP가 원하는 것을 할 것입니다 이유를 설명하기 위해 질문을.
Twisty Impersonator

9
나는 이것을 시도하고 악의적 인 소프트웨어가있는 드라이브 바이 다운로드에 의해 타격을 받았다는 것을 깨닫지 못한 사람에게는 유감스럽게 생각할 것입니다.
MoonRunestar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.