Code Golf of Death [ditutup]


34

Tulis beberapa kode yang menyebabkan BSOD atau kernel panik!

Aturan:

  • Pada Windows, Anda harus menyebabkan BugCheck (Layar Biru Kematian), di Linux (atau sistem * nix lainnya), Anda harus menyebabkan kepanikan kernel.
  • Tidak boleh merusak sistem (artinya harus bekerja saat reboot)
  • Driver mode kernel diizinkan.
  • Nyatakan informasi OS dan versi Anda.
  • Jelaskan bagaimana kecelakaan itu disebabkan.
  • Itu tidak melanggar aturan untuk menggunakan alat yang secara khusus dirancang untuk menyebabkan kerusakan, tetapi melakukannya tidak terlalu kreatif!
  • Suara terbanyak menang.

3
@urogen - Terakhir kali saya memeriksa, memasukkan 1/0file yang disebut driver.cbukan merupakan driver mode kernel yang valid. Apapun, pemenang didasarkan pada upvotes, bukan panjang kode.
Polinomial,

1
Saya belum mengikuti Meta Code Golf akhir-akhir ini - apakah "tertinggi terpilih" sekarang diizinkan? (Jika ini masalahnya, situs web ini hanya mendapat 100x lebih dahsyat!)
Ry-

1
@minitech Ini kriteria objektif, jadi saya tidak mengerti mengapa itu tidak boleh.
Polinomial

2
@Polynomial Saya telah memutarnya dan hampir semua jawaban, mereka bagus dan masyarakat benar-benar berharap tantangan semacam ini dapat diizinkan, tetapi itu tidak cocok dengan model SE.
kucing

4
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena memerlukan kode berbahaya, yang melanggar aturan kami. meta.codegolf.stackexchange.com/a/4831/34718
mbomb007

Jawaban:


24

Bash, x86 Linux 2.6.20 kernel

Peringatan: perintah berikut dapat menyebabkan kerusakan permanen pada sistem Anda.

cat /dev/urandom > /dev/mem

Akan menampilkan yang berikut ( coba di sini ). Setelah ini, skrip hang.

/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

Berikut adalah pengecualian lain yang ditemukan dengan perintah yang sama:

/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
Saya rasa begitu. Dengan kekuatan besar datang tanggung jawab besar.
salin

15
Melanggar Harus tidak merusak persyaratan sistem - jika Anda menjalankannya cukup lama, akhirnya akan menulis ulang driver disk dengan kode yang memformat disk.
ugoren

5
@ugoren Itu skenario yang sangat tidak mungkin. Itu harus menulis banyak alamat dan instruksi 32 bit yang akurat di tempat yang tepat dan tidak menimpa orang lain
salin

9
"Jalankan cukup kali, pada akhirnya akan menulis ulang driver disk dengan kode yang memformat disk" - Tidak yakin, urandom adalah pseudorandom.
skeevey

3
@ugoren Aturan "tidak boleh merusak sistem" hanyalah untuk mencegah jawaban seperti sudo rm -Rf /. Kemungkinan menyebabkan kerusakan permanen pada sistem menggunakan metode ini kurang dari peluang, katakanlah, brute-forcing output dari serangkaian lirik lagu berdasarkan hash dari teks.
Polinomial

25

C, 16 karakter, untuk P5 x86

main=-926478352;

Ingat bug F00F semua orang? Saya membantu mengunci satu atau dua mesin pada hari itu dengan program kecil ini. (Ya, saya sudah bermain golf selama itu.)

Memang, itu tidak cukup apa yang diminta, dan itu hanya bekerja pada steppings lama dari chip P5 Pentium. Tetapi dalam mendukungnya, ini cross-platform, bekerja pada Linux dan Windows!


2
Ini berbahaya, bukan?

9

QBASIC, 38 Karakter

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

Tidak yakin bagaimana Anda akan mendefinisikan panik BSOD atau Kernel di DOS, tapi ini mungkin cukup dekat. Ketika menjalankan layar hanya kosong, dan mesin tidak menanggapi apa pun, bahkan Ctrl + Alt + Delete. Anda harus memulai ulang dengan hard reset atau siklus daya untuk menjalankan mesin lagi. Ini berjalan pada DOS 6.22 di bawah VirtualBox. Tidak yakin persis mengapa hal itu menyebabkan sistem crash, tetapi, pada dasarnya program ini menulis (POKE) ke memori yang tidak ada tulisan bisnisnya.


2
Alasan crash adalah karena Anda menimpa memori program sistem dengan sampah.
Polinomial

Ya, saya tahu itu, tetapi saya memikirkan sesuatu yang sedikit lebih spesifik. Aku bahkan tidak yakin ke bagian mana dari ingatan itu.
Kibbee

1
Anda menimpa vektor interupsi DOS dan COMMAND.COMkode program yang disimpan dalam alamat memori rendah. Sumber: img.tfd.com/cde/MEMMAP.GIF
Polinomial

8

sh (dalam JSLinux)

Linux memberi init proses perlindungan khusus terhadap sinyal . Namun, saya perhatikan bahwa di JSLinux, /sbin/initadalah skrip shell yang mengeksekusi binari lainnya (paling mirip dengan /bin/busybox).

Loop "tak terbatas" ini dimulai ulang shsesuai kebutuhan:

while /bin/true; do

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

done

Namun, bagaimana jika /bin/truetidak selalu mengembalikan kode keluar 0? /binada pada sistem file root read-only, namun Linux memungkinkan kita mengubahnya dengan menggunakan mount "bind":

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

Dan kita mendapatkan:

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

4

Bash di Linux, 27 karakter

echo c>/proc/sysrq-trigger

Atau jika Anda memiliki izin sudo:

echo c|sudo tee /proc/sysrq-trigger

1
Ini menghasilkan sh: can't create /proc/sysrq-trigger: nonexistent directorybagi saya. (Meskipun ini dalam jsLinux, jadi saya mungkin harus menguji pada kotak nyata)
Polinomial

4

GTB , 13 karakter

Dieksekusi dari kalkulator TI-84

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

Jika sebagian besar RAM gratis, itu akan rusak ERR:MEMORY

Jika tidak, RAM kalkulator sangat tersumbat sehingga mati dan membersihkannya selain itu.

Contoh bagus "virus kalkulator"


Saya melihat, hanya menempatkan ini +, ++, ++++, dll di Str0. Itu memberi saya ERR:MEMORY, tetapi mencoba untuk menampilkan Str0nilai langsung crash 84+ saya. Juga, ini membuat saya kehilangan semua program saya.
LegionMammal978


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

Dalam bash shell,

Saya tidak begitu yakin apakah ini diperhitungkan di sini, tetapi jika Anda membiarkannya berjalan cukup lama, CPU menjadi terlalu panas dan sistem macet, dan ia melakukan boot ulang dengan aman tanpa membahayakan, tentu saja jika Anda melakukannya sepanjang waktu akan ada beberapa kerusakan sistem.


6
Ini tidak bekerja. Itu hanya memutar CPU pada penggunaan 100%, yang dinegasikan oleh sistem pendingin setengah layak. Saya sudah menjalankan Folding @ Home selama berbulan-bulan pada penggunaan CPU 100% dan tidak pernah mesinnya gagap.
Polinomial


2
@Optimus Anda mungkin meninggalkannya di sini - itu bukan jawaban yang valid, tetapi tidak membahayakan. Saya sebenarnya mengharapkan solusi Windows menjadi lebih sulit, karena Linux memungkinkan Anda untuk memecahkan banyak hal jika Anda benar-benar menginginkannya.
Polinomial

2
@ Polinomial Saya rasa itu tidak benar, Linux hanya mendokumentasikan lebih baik cara Anda dapat merusaknya .
Berhenti menghidupkan counterclockw

1
@leftaroundtentang saya tidak setuju. Windows dirancang dari bawah ke atas untuk secara aktif mencegah Anda merusak kondisi sistem dari mode pengguna, dan juga menghentikan Anda dari memodifikasi file sistem kritis melalui Perlindungan File Windows, file sistem terkunci, dll. Linux, di sisi lain, dirancang dengan cara yang memungkinkan stabilitas maksimum jika Anda tidak mencoba mengacaukannya. Tetapi, jika Anda memang ingin mengacaukannya, Anda bisa. Sebagai contoh, saya dapat memodifikasi /dev/mematau /dev/kmemseperti yang saya inginkan dari root.
Polinomial

2

Ruby (jalankan sebagai root), 36 atau 40 karakter (tergantung kecocokan untuk /p*/s*r)

Lihat http://www.kernel.org/doc/Documentation/sysrq.txt dan cari 'c'(termasuk tanda kutip!) Untuk mengetahui mengapa ia bekerja.

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

EDIT: Versi yang lebih panjang yang berfungsi jika Anda memiliki hal-hal lain yang cocok /p*/s*r

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

EDIT 2: Pembunuhan berlebihan yang disengaja.


2
get-process | stop-process -force

di PowerShell


1
"Itu tidak melanggar aturan untuk menggunakan alat yang secara khusus dirancang untuk menyebabkan kerusakan, tetapi melakukannya tidak terlalu kreatif!"
John Dvorak

1

Linux bash

cat /dev/zero > /dev/mem

Kosongkan seluruh memori dan menyebabkan panik kernel yang tak terbatas.

Coba di sini .


Seberapa berbeda ini dari ini ? s/zero/urandom/.
NoOneIsHere

@NoOneIsHere Panic kernel tidak pernah berhenti dengan versi ini, dan di sini memori dihapus, tidak diisi dengan byte acak.
TuxCrafting

0

Batch, 15 byte

:A
start
goto A

Hanya meluap memori dalam waktu linier dengan memulai cmd.exeratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan dan ratusan kali.

Ada program 24-byte yang lebih mematikan (tapi mungkin tidak bersaing) yang memulai sendiri berulang-ulang, sehingga meluap memori dalam waktu logaritmik (yaitu meningkatkan RAM Anda tidak menunda crash). Misalkan kode di bawah ini terletak di C:\a.bat:

:A
start C:\a.bat
goto A

.

Jujur saya takut untuk mencobanya.


Adakah yang tahu bahwa program yang terakhir adalah bom fork?
dorukayhan ingin Monica kembali

Ya saya lakukan. :() { : | : & }; :
NoOneIsHere

mengapa tidak @0bukan C:\a.bat?
Johannes Kuhn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.