Làm thế nào tôi có thể kích động Windows để treo (đóng băng)?


180

Tôi cần phải kiểm tra hành vi thiết bị trong trường hợp rằng Windows cứng bị treo / đóng băng (ví dụ như màn hình đóng băng, không có đèn LED nhấp nháy, không có phản ứng đối với nguyên liệu đầu vào, trong đó có tổ hợp phím Ctrl + Alt + Del , vv). Để có đủ các thử nghiệm trong một thời gian ngắn hợp lý, tôi cần phải bắt đầu các lần treo này theo chương trình hoặc cách khác.

Tôi đặc biệt quan tâm đến Windows 10 nhưng mọi cách làm việc cho các phiên bản khác đều được đánh giá cao.

Mọi tìm kiếm tôi đã thực hiện về chủ đề này không gây ngạc nhiên khi đưa tôi đến các cuộc thảo luận về cách loại bỏ các tình huống này, không gây ra chúng. Vì vậy, câu hỏi có vẻ đủ kỳ lạ.

Phản hồi: Tôi đã thử nhiều công thức được đưa ra trong câu trả lời và nhận xét. Trước hết, tôi không quan tâm đến các sự cố mang BSoD (đó là lý do tại sao tôi mô tả sự đóng băng, không phải là sự cố).

Tôi phải thú nhận rằng Windows 10 64-bit cho thấy khả năng chống chịu tốt với nhiều cách. Nó đối phó với hầu hết mọi phương pháp tải CPU (bao gồm cả nĩa , vòng lặp, v.v.) khá tốt. Các phương thức gây ra lỗi ngay lập tức (hầu hết các phương thức treo NotMyFault) được HĐH xử lý bằng khởi động lại hoặc tắt máy (đó không phải là điều tôi theo đuổi). Các kết quả tốt nhất đã đạt được bằng các phương pháp rò rỉ bộ nhớ của NotMyFault - đóng băng thực sự mà không có cơ hội khởi động lại.

Cuối cùng, tôi đã bị ấn tượng bởi số lượng tài liệu của Microsoft nói về việc làm cho Windows đóng băng. Có vẻ như họ biết phần này tốt hơn nhiều so với phần ngược lại (chiến đấu đóng băng) ;-)


Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
DavidPostill

3
Có một tính toán bạn có thể thực hiện bằng máy tính, nó đóng băng lõi trên CPU cho đến khi hoàn thành nó. Trên một máy lõi tứ, bạn sẽ làm điều đó bốn lần rõ ràng. Nhưng tôi không thể nhớ cuộc đời toán học gây ra nó.
mickburkejnr

6
@mickburkejnr Đó là giai đoạn của 100000. Chuyển sang "Chế độ xem khoa học" loại 100000 và nhấn "n!". Điều này hoạt động tốt trên các phiên bản Windows cũ. Ngày nay, bạn sẽ nhận được cảnh báo rằng việc tính toán này có thể mất nhiều thời gian và bạn có thể hủy bỏ nó.
duenni

25
Chỉ cần bắt đầu sử dụng nó.
samazi

5
Cài đặt nâng cấp luôn làm việc cho tôi.
Daniel R Hicks

Câu trả lời:


230

Có lẽ điều này có thể giúp: Buộc sự cố hệ thống từ bàn phím

Với bàn phím USB, bạn phải kích hoạt sự cố do bàn phím khởi tạo trong sổ đăng ký. Trong khóa đăng ký HKEY_LOCAL_MACHINE \ System \ CurrentControlset \ Services \ kbdhid \ Paramameter, tạo một giá trị có tên CrashOnCtrlScroll và đặt giá trị đó bằng giá trị REG_DWORD là 0x01.

Bạn phải khởi động lại hệ thống để các cài đặt này có hiệu lực.

Sau khi hoàn thành, sự cố bàn phím có thể được bắt đầu bằng cách sử dụng chuỗi phím nóng sau: Giữ phím CTRL ngoài cùng bên phải và nhấn phím SCROLL LOCK hai lần.

Hoặc bạn có thể bắt đầu ném bom ngã ba: xem câu hỏi SO này

Ngoài ra còn có NotMyFault

Notmyfault là một công cụ mà bạn có thể sử dụng để khắc phục sự cố, treo và gây rò rỉ bộ nhớ kernel trên hệ thống Windows của bạn. Nó hữu ích cho việc tìm hiểu cách xác định và chẩn đoán các sự cố phần cứng và trình điều khiển thiết bị và bạn cũng có thể sử dụng nó để tạo các tệp kết xuất màn hình xanh trên các hệ thống hoạt động sai.


9
Đã thử ForkBomb và NotMyFault. Một trong những phương pháp rò rỉ dường như làm những gì tôi muốn. Những người khác không hữu ích vì họ mang đến để khởi động lại / tắt máy không bị đóng băng. Cảm ơn rất nhiều.
hypers

6
CtrlScroll mang đến cho bạn một BSOD. Cho dù điều đó đóng băng hệ thống để gỡ lỗi hoặc chỉ khởi động lại nó, tùy thuộc vào cài đặt khởi động.
grawity

51
Aaannnddd duenni không bao giờ được phép ở gần máy tính của tôi. Không bao giờ.
corsiKa

25

Có vẻ như bạn đang kiểm tra phản ứng của thiết bị bên ngoài với HĐH trở nên không phản hồi.

Nếu phần cứng của bạn có thể được kết nối với cài đặt Windows ảo hóa, thì bạn có thể tạm dừng và tiếp tục máy ảo bao nhiêu lần tùy thích. Cài đặt HĐH mong muốn trong môi trường VirtualBox (hoặc ảo hóa máy tính để bàn khác), hiển thị mọi giao diện phần cứng đang được sử dụng (USB, Ethernet hoặc bất cứ thứ gì) cho VM.

Sau đó, bạn có thể tạm dừng và tiếp tục máy ảo theo ý muốn.


24

Ít nhất là dưới một phiên bản Windows cũ hơn (một số năm trước), những điều sau đây đã hoạt động:

Tôi đã viết một chương trình C với một vòng lặp vô tận:

while(1) {}

... sau đó tôi đã cho chương trình đó "ưu tiên thời gian thực" trong trình quản lý tác vụ (cũng có một API có thể thực hiện việc này).

Trên hệ thống đa lõi, tôi sẽ cần phải thực hiện việc này nhiều lần để một vòng lặp đang chạy trên mỗi lõi ...


39
Để làm nóng CPU của bạn ít hơn trong khi làm điều đó: đặt _mm_pause()từ #include <immintrin.h>trong vòng lặp. Đó là một hướng dẫn phần cứng CPU, không phải là một cuộc gọi hệ thống "ngủ" dưới bất kỳ hình thức nào; theo như OS, quy trình của bạn không thể phân biệt được với SuperPI; sự khác biệt chỉ là CPU tiêu thụ bao nhiêu năng lượng trong khi chạy vòng lặp.
Peter Cordes

5
Tôi không chắc chắn nếu điều đó ngăn các phần chế độ kernel của windows hoạt động.
CodeInChaos

2
@CodesInChaos: Hầu hết các luồng nhân chạy ở mức ưu tiên bình thường. Một trong số đó cho mỗi CPU và kernel cũng được thực hiện khá nhiều.
Joshua

Một kỹ thuật khác liên quan đến lắp ráp x86 ( STI+ HLT): stackoverflow.com/questions/3747847/
triệt

3
@meklarian: Nên CLI; HLT. Có lẽ bạn phải làm điều đó từ chế độ đặc quyền. Về nguyên tắc, nó vẫn có thể được giải cứu bằng NMI hoặc tương tự.
Nate Eldredge

10

Việc treo kernel mạnh nhất (nghĩa là không có theo dõi chuột, v.v.) là khi mã đi vào một vòng lặp vô hạn trong chế độ kernel với các ngắt.

Bạn có thể đạt được điều này với trình điều khiển thiết bị và thậm chí tốt hơn, bạn có thể viết trình điều khiển để nó khởi động và dừng treo dưới sự kiểm soát của bạn (giả sử vòng lặp vô hạn đang kiểm tra điều kiện bạn đang kiểm soát).

Làm thế nào để viết và cài đặt trình điều khiển này sẽ là chủ đề của một hoặc ba câu hỏi khác, nhưng đó là cách tiếp cận tôi thực hiện.


9

Vui lòng kiểm tra câu hỏi sau trên StackOverflow tương tự câu hỏi của bạn: Cách làm cho cửa sổ đóng băng trong khoảng thời gian ngắn

Điều quan trọng là không có cách nào (đáng tin cậy) làm điều đó.

Thay vì đóng băng hoặc khiến Windows bị treo, có lẽ bạn chỉ có thể làm gián đoạn việc liên lạc với thiết bị của mình.

Tôi không biết thiết bị của bạn là gì và cách bạn kết nối nó. Nếu đó là bộ chuyển đổi USB hoặc Ethernet, ví dụ, bạn có thể dễ dàng tắt nó trong Trình quản lý thiết bị hoặc rút phích cắm? Nếu bạn mạnh mẽ làm sập hoặc treo hệ thống, bạn có thể làm hỏng hệ thống của mình theo nhiều cách khác nhau, vì vậy hãy cẩn thận với những gì bạn làm.


1
Tôi sẽ xem xét ngắt kết nối vật lý của thiết bị nếu tôi không hài lòng với kết quả phần mềm. Cảm ơn.
hypers

5

Là chế độ gỡ lỗi kernel không phải là một tùy chọn?

Tôi đã thiết lập nó trong Windows 7 và các hướng dẫn được liên kết trong câu trả lời này chỉ định XP trở lên, vì vậy nó sẽ hoạt động với Windows 10.

Tôi đã thiết lập nó trên FireWire / 1394 , theo ý kiến ​​của tôi là dễ nhất. Nhưng bạn cũng có thể làm điều đó qua mạng hoặc USB (và hơn thế nữa ).

Về cơ bản,

Thiết lập máy tính đích bằng cách chạy các lệnh này trong dấu nhắc nâng cao (chọn kênh n):

bcdedit /debug on
bcdedit /dbgsettings 1394 channel:n

Điều này giống như đi đến tab khởi động msconfigvà chọn nút 'Nâng cao':

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Sau đó (sau khi khởi động lại máy tính đích), hãy chạy WinDbg trên máy tính chủ bằng cách sử dụng cùng một chút WinDbg của máy tính đích.

Sau đó, đó chỉ là vấn đề tạm dừng thực thi kernel bất cứ khi nào bạn muốn từ máy chủ. Nếu bạn kiểm tra thiết bị có một số hoạt động không đồng bộ mà thiết bị đang chạy thì điều này sẽ hiệu quả như các phương tiện khác.


Cách thú vị. Cần một PC thứ hai mặc dù. Nhưng sẽ cố gắng khi có thể.
hypers

2

Tôi không biết điều này có đủ điều kiện đóng băng không vì con trỏ chuột vẫn di chuyển trên màn hình, nhưng Giao diện người dùng Windows 7 sẽ không phản hồi nếu bạn gặp lỗi I / O của thiết bị cụ thể hơn là lỗi ổ cứng. Một trong những ổ đĩa cứng của tôi là tự báo cáo lỗi ổ đĩa sắp xảy ra thông qua SMART và Windows 7 sẽ gắn kết nó nhưng bị treo bất cứ khi nào tôi cố truy cập vào một số tệp được lưu trên đó. Giao diện người dùng sẽ khóa (ngoại trừ chuyển động con trỏ chuột) trong tối đa 5 phút cho đến khi có thể đọc tệp hoặc tháo ổ đĩa sau khi hết thời gian. Tôi không biết nếu Windows sử dụng đồng hồ hệ thống cho thời gian chờ, nhưng có lẽ nếu bạn bằng cách nào đó đóng băng thời gian bạn có thể kéo dài thời gian chờ? Có thể điều này sẽ giúp bạn có được một phần ở đó, nhưng không phải 100% câu trả lời bạn đang tìm kiếm.


2

Lỗi này đóng băng Windows khá nhanh do cạn kiệt tài nguyên. Dễ sinh sản quá.

Hóa ra, đây thực sự là một lỗi trong cách dòng lệnh (cụ thể hơn cmd.exe) phân tích các tệp bó và có thể dẫn đến một cuộc tấn công từ chối loại dịch vụ nhanh chóng; đưa dòng sau vào một tệp bó (không có dòng mới) sẽ tiêu tốn một lượng lớn bộ nhớ rất nhanh do lỗi này (ví dụ):

^ nul<^

Câu chuyện dài, khi một dấu mũ ở cuối tệp, phần cuối thực tế của tệp bị 'bỏ qua' và tệp xử lý 'đặt lại' về 0 (về cơ bản) để lô được phân tích lại (ad infinitum).


2

Đây là mã nguồn của một ứng dụng mà tôi sử dụng trong các bài học gỡ lỗi của mình. Nó cho thấy cách một ứng dụng chế độ người dùng có thể thực hiện một loại tấn công DoS.

Bạn sẽ nhận thấy rằng con trỏ chuột của bạn di chuyển rất hiếm khi (cứ sau mười một giây trên máy của tôi). Có khả năng PC của bạn vẫn sẽ phản ứng trên nút Nguồn nếu bạn chờ đủ lâu.

Nó hoạt động bằng cách sử dụng một vòng lặp vô tận và đặt mức ưu tiên cao nhất cho quy trình ( 0x100"thời gian thực") và đặt mức ưu tiên cao nhất cho các luồng ( 15"thời gian quan trọng"). Nó sẽ bắt đầu 8 trong số đó, đủ cho máy tính i7. Nếu bạn cần nhiều hơn, điều chỉnh vòng lặp. Nhiều người trong số họ sẽ có khả năng làm chậm mọi thứ nhiều hơn.

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

Coi chừng chương trình này có hành vi không xác định trong C ++, vì vậy trong các cài đặt tối ưu hóa nhất định, trình biên dịch có thể thay thế toàn bộ bằngExitProcess(0)
Ben Voigt

@BenVoigt Trong trường hợp đó (tức là với g++) nếu -O0không đủ, có thể gcc -Q -O0 --help=optimizers | grep enabled (và vô hiệu hóa tối ưu hóa còn tồn tại bằng tay) có thể giải quyết được ExitProcess(0)vấn đề không?
Hastur

@BenVoigt: bạn có thể giải thích, phần nào bạn coi là hành vi không xác định?
Thomas Weller

@BenVoigt IMHO trình biên dịch chỉ có thể tối ưu hóa return 0câu lệnh, bởi vì điều đó tồn tại sau while(true). Trình biên dịch có thể phát hiện ra rằng đây là một tuyên bố không thể truy cập được.
Thomas Weller

Ngôn ngữ C ++ yêu cầu mọi luồng cuối cùng đều có tiến bộ, được định nghĩa theo một số loại hành vi có thể quan sát được. Bởi vì vòng lặp vô hạn không bao giờ tạo ra tiến trình có thể quan sát được, trình biên dịch có thể suy ra rằng nó không đạt được, và loại bỏ không chỉ nó, mà tất cả các mã ở trên nó trở lại nhánh gần nhất.
Ben Voigt

0

Bạn đã thử tiện ích CPUEater đi kèm với Process Lasso chưa? Thi thiên Tôi không làm việc cho bitum.


Tôi nghĩ bạn có nghĩa là "Bạn đã thử chưa" chứ không phải "Bạn đã thử chưa". :)
fabspro

@fabspro Tôi nghĩ rằng "Bạn đã thử" là đúng vì OP đã chấp nhận một câu trả lời khác rồi nên sự kiện tôi đang đề cập đến ("giải quyết vấn đề") là trong quá khứ, nhưng có lẽ người ta có thể nói rằng internet luôn xảy ra. Dù sao, nếu bạn đề xuất một chỉnh sửa, tôi sẽ sẵn sàng ủy thác nhiệm vụ chấp nhận nó vào hàng đánh giá. Nguồn: englishforums.com/English/HaveYouTriedOrDidYouTry/zclxb/
mẹo

Tôi đoán nếu anh ta đã giải quyết vấn đề, thì câu hỏi của bạn có thể là một nhận xét về câu trả lời của anh ta sau đó - đại loại như "khi bạn đang nghiên cứu vấn đề của mình, có phải là một trong những điều bạn đã thử tiện ích ___ không?" có lẽ ... chỉ là gợi ý mọi thứ :)
fabspro

... touché :)
beppe9000

huehuehuehuehue
fabspro

-2

Nếu bạn thực sự muốn treo PC của mình, hoàn toàn khiến nó bị đóng băng , chỉ cần sử dụng hết RAM và buộc nó vào bộ nhớ trang. Điều đó sẽ vượt ra ngoài việc đóng băng đơn thuần và thực sự chỉ làm quá tải những thứ mà bạn thậm chí không thể sử dụng Trình quản lý tác vụ, thậm chí không bằng bàn phím. Ngay cả khi quá trình kết thúc, sẽ mất nhiều thời gian để PC phục hồi. (Đó là tốt nhất!)

Chẳng hạn, bạn có thể tạo một lớp với một con trỏ tới chính nó và trong một vòng lặp while, tạo một thể hiện mới của lớp đó mãi mãi, lưu trữ từng thể hiện mới trong con trỏ của cá thể trước đó. Có thể thêm một số nhân đôi hoặc vectơ vào lớp, để tiêu thụ bộ nhớ nhanh hơn. Sau đó, bạn có thể có một bộ đếm thời gian thoát khỏi vòng lặp while và giải mã mọi thứ; Tất nhiên, bạn sẽ phải chờ một chút để nó phục hồi.


-4

Tôi sẽ đề nghị chỉ cần tạo một tệp bó với mã sau đây:

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

Đây có lẽ là cách dễ nhất và an toàn nhất để làm điều đó. Bạn có thể thay thế tên quy trình bằng bất kỳ ứng dụng windows nào.


3
Điều này rất có thể sẽ làm cạn kiệt RAM và khiến ổ cứng bị hỏng. Tùy thuộc vào thông số kỹ thuật máy tính của bạn, có thể máy tính sẽ tiếp tục làm việc này, đặc biệt là vì 4 trong số các chương trình được liệt kê là khá nhẹ ( iexplore.exevà có thể explorer.exesẽ có tác động lớn hơn). Nó sẽ tự động loại bỏ các quá trình ăn cắp bộ nhớ.
MoonRunestar

-10
  1. Truy cập C: \ Windows \ Temp \
  2. Nhấn Ctrl-a để chọn tất cả
  3. Nhấn Enter

8
Bạn sẽ cần hàng ngàn mặt hàng để có hiệu quả mơ hồ! Thư mục% TEMP% của tôi trống ...
AlainD

6
Mặc dù điều này dường như là một nỗ lực hợp pháp để trả lời câu hỏi, nhưng hoàn toàn không rõ chính xác điều này được cho là như thế nào dẫn đến việc Windows bị khóa theo yêu cầu của OP. Vui lòng chỉnh sửa câu hỏi của bạn để giải thích lý do tại sao điều này sẽ làm những gì OP muốn.
Kẻ giả mạo Twisty

9
Tôi sẽ cảm thấy tiếc cho bất cứ ai đã thử điều này và không nhận ra rằng họ đã bị tấn công bởi các bản tải xuống có phần mềm độc hại trong đó.
MoonRunestar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.