Code Golf of Death [đã đóng cửa]


34

Viết một số mã gây ra hoảng loạn BSOD hoặc kernel!

Quy tắc:

  • Trên Windows, bạn phải gây ra BugCheck (Màn hình xanh chết chóc), trên Linux (hoặc các hệ thống * nix khác), bạn phải gây ra sự hoảng loạn hạt nhân.
  • Không được làm hỏng hệ thống (tức là nó sẽ hoạt động khi khởi động lại)
  • Trình điều khiển chế độ hạt nhân được cho phép.
  • Nêu hệ điều hành và thông tin phiên bản của bạn.
  • Giải thích về vụ tai nạn được gây ra.
  • Không trái với quy tắc sử dụng các công cụ được thiết kế đặc biệt để gây ra sự cố, nhưng làm như vậy không sáng tạo lắm!
  • Upvote cao nhất chiến thắng.

3
@urogen - Lần trước tôi đã kiểm tra, đưa 1/0vào một tệp có tên driver.ckhông cấu thành trình điều khiển chế độ nhân hợp lệ. Bất kể, người chiến thắng dựa trên upvote, không phải chiều dài mã.
Đa thức

1
Gần đây tôi không theo dõi Meta Code Golf - có được phép "nâng cấp cao nhất" không? (Nếu đây là trường hợp, trang web này đã trở nên tuyệt vời hơn gấp 100 lần!)
Ry-

1
@minitech Đó là một tiêu chí khách quan, vì vậy tôi không hiểu tại sao nó không được phép.
Đa thức

2
@Polynomial Tôi đã đánh giá cao nó và hầu hết tất cả các câu trả lời, chúng rất tuyệt và cộng đồng thực sự mong muốn những loại thử thách này có thể được cho phép, nhưng điều đó không phù hợp với mô hình SE.
mèo

4
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó yêu cầu mã độc, vi phạm quy tắc của chúng tôi. meta.codegolf.stackexchange.com/a/4831/34718
mbomb007

Câu trả lời:


24

Bash, nhân x86 Linux 2.6.20

Cảnh báo: lệnh sau có thể gây hư hỏng vĩnh viễn cho hệ thống của bạn.

cat /dev/urandom > /dev/mem

Sẽ xuất ra sau đây ( thử ở đây ). Sau này, kịch bản bị treo.

/var/root # cat /dev/urandom > /dev/mem                                        
BUG: unable to handle kernel paging request at virtual address 474e82a5         
 printing eip:                                                                  
c01450c4                                                                        
*pde = 00000000                                                                 
Oops: 0000 [#1]                                                                 
CPU:    0                                                                       
EIP:    0060:[<c01450c4>]    Not tainted VLI                                    
EFLAGS: 00000082   (2.6.20 #12)                                                 
EIP is at free_block+0x54/0xf0                                                  
eax: 00000000   ebx: 474e82a1   ecx: c00745c8   edx: c0005e80                   
esi: c0070ce0   edi: c002c1a0   ebp: 00000000   esp: c0085eec                   
ds: 007b   es: 007b   ss: 0068                                                  
Process events/0 (pid: 3, ti=c0084000 task=c0094030 task.ti=c0084000)           
Stack: c0076410 00000002 c0051db0 c0051db0 c0051da0 00000002 c002c1a0 c01457dd  
       00000000 c0070ce0 c002c1a0 c0091840 c0145800 c0145870 00000000 00000000  
       c02cb2a0 c02cb2a0 00000296 c011dd27 c003fab0 c0094030 c009413c 00047e6c  
Call Trace:                                                                     
 [<c01457dd>] drain_array+0x7d/0xa0                                             
 [<c0145800>] cache_reap+0x0/0x110                                              
 [<c0145870>] cache_reap+0x70/0x110                                             
 [<c011dd27>] run_workqueue+0x67/0x130                                          
 [<c011df17>] worker_thread+0x127/0x140                                                                
 [<c010c7d0>] default_wake_function+0x0/0x10                                    
 [<c010c817>] __wake_up_common+0x37/0x70                                        
 [<c010c7d0>] default_wake_function+0x0/0x10                                    
 [<c011ddf0>] worker_thread+0x0/0x140                                           
 [<c0120d94>] kthread+0x94/0xc0                                                 
 [<c0120d00>] kthread+0x0/0xc0                                                  
 [<c0102ee7>] kernel_thread_helper+0x7/0x10                                     
 =======================                                                        
Code: 04 0f 8d 8f 00 00 00 8b 44 24 08 8b 0c a8 8d 91 00 00 00 40 c1 ea 0c c1 e2

Đây là một ngoại lệ khác được tìm thấy với cùng một lệnh:

/dev # cat urandom > mem                                                        
------------[ cut here ]------------                                            
Kernel BUG at c014514c [verbose debug info unavailable]                         
invalid opcode: 0000 [#1]                                                       
CPU:    0                                                                       
EIP:    0060:[<c014514c>]    Not tainted VLI                                    
EFLAGS: 00000046   (2.6.20 #12)                                                 
EIP is at free_block+0xdc/0xf0                                                  
eax: 1608347b   ebx: c009b010   ecx: c003f508   edx: c00057e0                   
esi: c009b000   edi: c002cd40   ebp: 00000000   esp: c0085eec                   
ds: 007b   es: 007b   ss: 0068                                                  
Process events/0 (pid: 3, ti=c0084000 task=c0094030 task.ti=c0084000)           
Stack: c009b010 00000004 c009b010 c009b010 c009b000 00000004 c002cd40 c01457dd  
       00000000 c02ddf20 c002cd40 c0091840 c0145800 c0145870 00000000 00000000  
       c02cb2a0 c02cb2a0 00000296 c011dd27 c005c5a0 c0094030 c009413c 000409ed  

6
Tôi đoán vậy. Với sức mạnh lớn đến trách nhiệm lớn.
sao chép

15
Vi phạm Không được làm hỏng yêu cầu hệ thống - nếu bạn chạy đủ số lần, cuối cùng nó sẽ ghi lại trình điều khiển đĩa với mã định dạng đĩa.
ugoren

5
@ugoren Đó là một kịch bản cực kỳ khó xảy ra. Nó sẽ phải viết một loạt các địa chỉ và hướng dẫn 32 bit chính xác ở đúng nơi và không ghi đè lên người khác
sao chép

9
"Chạy đủ số lần, cuối cùng nó sẽ viết lại trình điều khiển đĩa với mã định dạng đĩa" - Không chắc chắn, urandom là giả danh.
hoài nghi

3
@ugoren Quy tắc "không được làm hỏng hệ thống" chỉ là để ngăn chặn câu trả lời như thế nào sudo rm -Rf /. Cơ hội gây ra thiệt hại vĩnh viễn cho hệ thống bằng phương pháp này ít hơn so với cơ hội, giả sử, buộc phải xuất ra một tập lời bài hát dựa trên hàm băm của văn bản.
Đa thức

25

C, 16 ký tự, cho P5 x86

main=-926478352;

Bạn có nhớ lỗi F00F không? Tôi đã giúp khóa một hoặc hai máy trong một ngày với chương trình nhỏ này. (Vâng, tôi đã chơi golf từ lâu.)

Cấp, nó không hoàn toàn là những gì được yêu cầu, và nó chỉ hoạt động trên các bước cũ của chip Pentium P5. Nhưng theo hướng có lợi, nó đa nền tảng, hoạt động trên cả Linux Windows!


2
Nó độc hại phải không?

9

QBASIC, 38 ký tự

DEF SEG=0:FOR I=0 TO 4^8:POKE I,1:NEXT

Không chắc chắn làm thế nào bạn sẽ xác định một hoảng loạn BSOD hoặc Kernel trong DOS, nhưng điều này có lẽ khá gần. Khi chạy màn hình chỉ bị trống và máy không phản hồi gì cả, thậm chí không Ctrl + Alt + Delete. Bạn phải khởi động lại với thiết lập lại cứng hoặc chu kỳ nguồn để máy hoạt động trở lại. Điều này đang chạy trên DOS 6.22 trong VirtualBox. Không chắc chắn chính xác lý do tại sao nó khiến hệ thống gặp sự cố, nhưng, về cơ bản, chương trình đang ghi (POKE) vào bộ nhớ mà nó không có văn bản kinh doanh.


2
Lý do nó bị sập là vì bạn ghi đè lên bộ nhớ chương trình hệ thống với rác.
Đa thức

Vâng, tôi biết điều đó, nhưng tôi đã suy nghĩ một cái gì đó cụ thể hơn một chút. Tôi thậm chí không chắc phần nào của bộ nhớ được ghi vào.
Kibbee

1
Bạn đang ghi đè các vectơ ngắt DOS và COMMAND.COMmã chương trình được lưu trữ trong các địa chỉ bộ nhớ thấp. Nguồn: img.tfd.com/cde/MEMMAP.GIF
Đa thức

8

sh (trong JSLinux)

Linux cung cấp cho quá trình init sự bảo vệ đặc biệt chống lại các tín hiệu . Tuy nhiên, tôi nhận thấy rằng trong JSLinux, /sbin/initlà một tập lệnh shell thực thi các nhị phân khác (hầu hết được liên kết với nhau /bin/busybox).

Vòng lặp "vô hạn" này khởi động lại shkhi cần thiết:

while /bin/true; do

  setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1'

done

Tuy nhiên, nếu /bin/truekhông luôn luôn trả về mã thoát là 0 thì sao? /binlà trên hệ thống tệp gốc chỉ đọc, nhưng Linux cho phép chúng ta thay đổi bằng cách sử dụng các liên kết "liên kết":

cp -R /bin /tmp/boom
rm /tmp/boom/true
printf '#!/bin/sh\nexec [ $PPID != 1 ]' > /tmp/boom/true
chmod 755 /tmp/boom/true
mount -o bind /tmp/boom /bin
killall -9 sh

Và chúng tôi nhận được:

/var/root # ./boom.sh
Killed
Kernel panic - not syncing: Attempted to kill init!

4

Bash trên Linux, 27 ký tự

echo c>/proc/sysrq-trigger

Hoặc nếu bạn có quyền sudo:

echo c|sudo tee /proc/sysrq-trigger

1
Kết quả này sh: can't create /proc/sysrq-trigger: nonexistent directorycho tôi. (mặc dù đây là trong jsLinux, vì vậy tôi có lẽ nên thử nghiệm trên một hộp thực sự)
Đa thức

4

GTB , 13 ký tự

Được thực hiện từ máy tính TI-84

:"+"→_[_+_→_]

Nếu hầu hết RAM là miễn phí, nó sẽ gặp sự cố ERR:MEMORY

Mặt khác, RAM của máy tính bị tắc đến mức nó tắt và xóa nó bên cạnh.

Ví dụ tuyệt vời về "virus máy tính"


Tôi hiểu rồi, chỉ puts này +, ++, ++++, vv trong Str0. Nó đã cho tôi ERR:MEMORY, nhưng cố gắng hiển thị Str0giá trị của nó ngay lập tức làm hỏng 84+ của tôi. Ngoài ra, điều này làm tôi mất tất cả các chương trình của tôi.
LegionMammal978


2
:(){ :|:& };:

Trong vỏ bash,

Tôi không chắc chắn nếu điều này được tính ở đây, nhưng nếu bạn để nó chạy quá lâu CPU quá nóng và sự cố hệ thống, và nó sẽ khởi động lại an toàn mà không gây hại, tất nhiên nếu bạn làm điều đó mọi lúc sẽ có một số thiệt hại hệ thống.


6
Điều này không thực sự làm việc. Nó chỉ quay CPU với mức sử dụng 100%, bị phủ nhận bởi bất kỳ hệ thống làm mát nửa vời nào. Tôi đã chạy Folding @ Home trong nhiều tháng với mức sử dụng CPU 100% và chưa bao giờ máy bị giật.
Đa thức


2
@Optimus Bạn cũng có thể để nó ở đây - đó không phải là một câu trả lời hợp lệ, nhưng nó không gây hại gì. Tôi thực sự mong đợi một giải pháp Windows sẽ khó khăn hơn, vì Linux cho phép bạn phá vỡ mọi thứ nếu bạn thực sự muốn.
Đa thức

2
@Polynomial Tôi không nghĩ đó là sự thật, Linux chỉ cung cấp tài liệu tốt hơn theo cách bạn có thể phá vỡ nó.
đã ngừng quay ngược chiều

1
@leftaroundabout Tôi không đồng ý. Windows được thiết kế từ đầu để chủ động ngăn bạn làm hỏng trạng thái hệ thống từ chế độ người dùng và cũng ngăn bạn sửa đổi các tệp hệ thống quan trọng thông qua Windows File Protection, mặt khác, các tệp hệ thống bị khóa, v.v. theo cách cho phép sự ổn định tối đa nếu bạn không cố gắng gây rối với nó. Nhưng, nếu bạn làm muốn gây rối với nó, bạn có thể. Ví dụ, tôi có thể sửa đổi /dev/memhoặc /dev/kmemnhư tôi muốn từ root.
Đa thức

2

Ruby (chạy dưới quyền root), 36 hoặc 40 ký tự (tùy thuộc vào kết quả khớp cho /p*/s*r )

Xem http://www.kernel.org/doc/Documentation/sysrq.txt và tìm kiếm 'c'(bao gồm cả trích dẫn!) Để xem lý do tại sao nó hoạt động.

open(Dir['/p*/s*r'][0],?a){|f|f<<?c}

EDIT: Phiên bản dài hơn hoạt động nếu bạn có những thứ khác phù hợp /p*/s*r

open('/proc/sysrq-trigger',?a){|f|f<<?c}

EDIT 2: Cố ý quá mức.


2
get-process | stop-process -force

trong quyền hạn


1
"Không trái với quy tắc sử dụng các công cụ được thiết kế đặc biệt để gây ra sự cố, nhưng làm như vậy không sáng tạo lắm!"
John Dvorak

1

Linux bash

cat /dev/zero > /dev/mem

Xóa toàn bộ bộ nhớ và gây ra sự hoảng loạn hạt nhân vô hạn.

Hãy thử nó ở đây .


Làm thế nào khác nhau từ điều này ? s/zero/urandom/.
NoOneIsHãy là

@NoOneIsHere Sự hoảng loạn hạt nhân không bao giờ dừng lại với phiên bản này và ở đây bộ nhớ bị xóa, không chứa đầy các byte ngẫu nhiên.
Thiền vào

0

Mẻ, 15 byte

:A
start
goto A

Chỉ tràn bộ nhớ trong thời gian tuyến tính bằng cách khởi động cmd.exe hàng trăm, hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm hàng trăm và hàng trăm và hàng trăm và hàng trăm và hàng trăm lần.

Có một vong (nhưng có lẽ không phải là cạnh tranh) Chương trình 24-byte mà bắt đầu lên bản thân hơn và hơn nữa, do đó tràn bộ nhớ trong thời gian logarit (tức là nâng cấp RAM của bạn không trì hoãn sự sụp đổ). Giả sử mã dưới đây nằm ở C:\a.bat:

:A
start C:\a.bat
goto A

.

Thành thật mà nói tôi sợ thử chúng.


Có ai để ý rằng chương trình sau là một quả bom ngã ba không?
dorukayhan muốn Monica trở lại vào

Vâng, tôi đã làm. :() { : | : & }; :
NoOneIsHãy

Tại sao không @0thay thế C:\a.bat?
Julian Kuhn
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.