Código Golf de la Muerte [cerrado]


34

¡Escriba un código que provoque un BSOD o pánico en el núcleo!

Reglas:

  • En Windows, debe causar un BugCheck (pantalla azul de la muerte), en Linux (u otros sistemas * nix) debe causar un pánico en el núcleo.
  • No debe dañar el sistema (es decir, debería funcionar al reiniciar)
  • Los controladores en modo kernel están permitidos.
  • Indique su sistema operativo y la información de la versión.
  • Explica cómo se produce el accidente.
  • ¡No está en contra de las reglas usar herramientas que están específicamente diseñadas para causar un bloqueo, pero hacerlo no es muy creativo!
  • Los votos a favor más altos ganan.

3
@urogen: la última vez que lo verifiqué, poner 1/0un archivo llamado driver.cno constituye un controlador de modo kernel válido. En cualquier caso, el ganador se basa en votos a favor, no en la longitud del código.
Polinomial

1
No he estado siguiendo Meta Code Golf últimamente, ¿ahora está permitido "el más votado"? (Si este es el caso, ¡este sitio web es 100 veces más increíble!)
Ry-

1
@minitech Es un criterio objetivo, así que no veo por qué no debería permitirse.
Polinomial

2
@Polynomial Lo he votado y casi todas las respuestas, son geniales y la comunidad realmente desea que se puedan permitir este tipo de desafíos, pero eso no encaja con el modelo SE.
gato

44
Estoy votando para cerrar esta pregunta como fuera de tema porque requiere código malicioso, lo que viola nuestras reglas. meta.codegolf.stackexchange.com/a/4831/34718
mbomb007

Respuestas:


24

Bash, kernel x86 Linux 2.6.20

Advertencia: el siguiente comando puede causar daños permanentes en su sistema.

cat /dev/urandom > /dev/mem

Producirá lo siguiente ( intente aquí ). Después de esto, el script se cuelga.

/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

Aquí hay otra excepción encontrada con el mismo comando:

/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  

66
Supongo que sí. Con un gran poder viene una gran responsabilidad.
copiar

15
Viola el requisito No debe dañar el sistema : si lo ejecuta suficientes veces, eventualmente reescribirá el controlador de disco con el código que formatea el disco.
ugoren

55
@ugoren Ese es un escenario extremadamente improbable. Tendría que escribir un montón de direcciones precisas de 32 bits e instrucciones en el lugar correcto y no sobrescribir otras
copie el

99
"ejecutarlo suficientes veces, eventualmente reescribirá el controlador de disco con código que formatea el disco" - No estoy seguro, urandom es pseudoaleatorio.
skeevey

3
@ugoren La regla "no debe dañar el sistema" es solo para evitar respuestas como sudo rm -Rf /. Las posibilidades de causar daños permanentes al sistema usando este método son menores que las posibilidades de, por ejemplo, forzar la salida de un conjunto de letras de canciones basadas en el hash del texto.
Polinomial

25

C, 16 caracteres, para P5 x86

main=-926478352;

¿Recuerdas el error del F00F a todos? Ayudé a bloquear una o dos máquinas en el día con este pequeño programa. (Sí, he estado jugando golf durante tanto tiempo).

De acuerdo, no es exactamente lo que se pidió, y solo funciona en versiones anteriores de los chips P5 Pentium. Pero a su favor, ¡es multiplataforma y funciona tanto en Linux como en Windows!


2
Es malicioso, ¿no es así?

9

QBASIC, 38 caracteres

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

No estoy seguro de cómo definiría un BSOD o Kernel panic en DOS, pero esto probablemente esté bastante cerca. Cuando se ejecuta, la pantalla se queda en blanco y la máquina no responde a nada, ni siquiera a Ctrl + Alt + Supr. Debe reiniciar con un restablecimiento completo o un ciclo de encendido para que la máquina vuelva a funcionar. Esto se ejecuta en DOS 6.22 en VirtualBox. No estoy seguro exactamente por qué hace que el sistema se bloquee, pero, básicamente, el programa está escribiendo (POKE) en la memoria en la que no tiene que escribir.


2
La razón por la que falla es porque está sobrescribiendo la memoria del programa del sistema con basura.
Polinomial

Sí, lo sabía, pero estaba pensando en algo un poco más específico. Ni siquiera estoy seguro de a qué parte de la memoria está escribiendo.
Kibbee

1
Está sobrescribiendo los vectores de interrupción de DOS y el COMMAND.COMcódigo de programa almacenados en direcciones de poca memoria. Fuente: img.tfd.com/cde/MEMMAP.GIF
Polynomial

8

sh (en JSLinux)

Linux le da al proceso init protección especial contra señales . Sin embargo, noté que en JSLinux, /sbin/inites un script de shell que ejecuta otros binarios (la mayoría enlazados /bin/busybox).

Este bucle while "infinito" se reinicia shsegún sea necesario:

while /bin/true; do

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

done

Sin embargo, ¿qué /bin/truepasa si no siempre devuelve un código de salida de 0? /binestá en el sistema de archivos raíz de solo lectura, pero Linux nos permite cambiar eso usando montajes "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

Y obtenemos:

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

4

Bash en Linux, 27 caracteres

echo c>/proc/sysrq-trigger

O si tienes permisos de sudo:

echo c|sudo tee /proc/sysrq-trigger

1
Esto resulta sh: can't create /proc/sysrq-trigger: nonexistent directorypara mí. (aunque esto está en jsLinux, por lo que probablemente debería probar en una caja real)
Polynomial

4

GTB , 13 caracteres

Ejecutado desde una calculadora TI-84

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

Si la mayor parte de la RAM es libre, se bloqueará con ERR:MEMORY

De lo contrario, la RAM de la calculadora está tan obstruida que se apaga y la borra además.

Gran ejemplo de un "virus calculador"


Veo, esto sólo pone +, ++, ++++, etc, en Str0. Me dio ERR:MEMORY, pero al tratar de mostrar Str0el valor instantáneamente se bloqueó mi 84+. Además, esto me hizo perder todos mis programas.
LegionMammal978


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

En bash shell,

No estoy tan seguro de si esto cuenta aquí, pero si lo dejas funcionar durante el tiempo suficiente el sobrecalentamiento de la CPU y los bloqueos del sistema, y ​​se reinicia de manera segura sin daños, por supuesto, si lo haces todo el tiempo habrá algún daño en el sistema.


66
Esto realmente no funciona. Simplemente hace girar la CPU al 100% de uso, lo cual es negado por cualquier sistema de enfriamiento medio decente. Ejecuté Folding @ Home durante meses al 100% de uso de la CPU y nunca tuve la máquina tartamudeando.
Polinomial


2
@Optimus También podría dejarlo aquí: no es una respuesta válida, pero no está haciendo ningún daño. De hecho, esperaría que una solución de Windows sea más difícil, ya que Linux le permite romper las cosas si realmente lo desea.
Polinomial

2
@Polynomial No creo que sea cierto, Linux solo documenta mejor las formas en que puede romperlo.
dejó de girar en sentido antihorario el

1
@leftaroundabout No estoy de acuerdo. Windows está diseñado desde cero para evitar activamente que dañe el estado del sistema desde el modo de usuario, y también le impide modificar archivos críticos del sistema a través de Protección de archivos de Windows, archivos de sistema bloqueados, etc. Linux, por otro lado, está diseñado de una manera que permita la máxima estabilidad si no intentas meterte con eso. Sin embargo, si usted no quiere meterse con él, se puede. Por ejemplo, puedo modificar /dev/memo /dev/kmemcomo deseo desde la raíz.
Polinómico

2

Ruby (ejecutar como root), 36 o 40 caracteres (dependiendo de las coincidencias para /p*/s*r)

Consulte http://www.kernel.org/doc/Documentation/sysrq.txt y busque 'c'(¡incluyendo comillas!) Para ver por qué funciona.

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

EDITAR: versión más larga que funciona si tienes otras cosas que coinciden /p*/s*r

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

EDIT 2: intencionalmente exagerado.


2
get-process | stop-process -force

en PowerShell


1
"¡No está en contra de las reglas usar herramientas que están específicamente diseñadas para causar un bloqueo, pero hacerlo no es muy creativo!"
John Dvorak

1

Bash de Linux

cat /dev/zero > /dev/mem

Borre toda la memoria y provoque un pánico infinito en el núcleo.

Probarlo aquí .


¿Qué tan diferente es esto de esto ? s/zero/urandom/.
NoOneIsHere

@NoOneIsHere El pánico del kernel nunca se detiene con esta versión, y aquí la memoria se borra, no se llena con bytes aleatorios.
TuxCrafting

0

Lote, 15 bytes.

:A
start
goto A

Simplemente desborda la memoria en tiempo lineal al iniciar cmd.exe cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos y cientos de veces.

Hay un mortal (pero probablemente no compiten) Programa de 24 bytes que se pone en marcha en sí una y otra vez, desbordando así la memoria en el tiempo logarítmica (es decir, actualizar la memoria RAM no retrasa el accidente). Supongamos que el siguiente código se encuentra en C:\a.bat:

:A
start C:\a.bat
goto A

.

Sinceramente, me da miedo probarlos.


¿Alguien notó que el último programa es una bomba tenedor?
Dorukayhan quiere que Monica regrese el

Sí, lo hice. :() { : | : & }; :
NoOneIsHere

¿Por qué no en @0lugar de C:\a.bat?
Johannes Kuhn el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.