写一些导致BSOD或内核崩溃的代码!
规则:
- 在Windows上,必须引起BugCheck(蓝屏死机),在Linux(或其他* nix系统)上,必须引起内核崩溃。
- 不得损坏系统(即重新启动后可以正常工作)
- 允许使用内核模式驱动程序。
- 陈述您的操作系统和版本信息。
- 说明崩溃的原因。
- 使用专门设计导致崩溃的工具并不违反规则,但是这样做并不是很有创意!
- 最高投票获胜。
写一些导致BSOD或内核崩溃的代码!
规则:
Answers:
警告:以下命令可能会导致系统永久损坏。
cat /dev/urandom > /dev/mem
将输出以下内容(在此处尝试)。此后,脚本将挂起。
/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
这是使用同一命令发现的另一个异常:
/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
sudo rm -Rf /
。使用这种方法对系统造成永久性损害的机会小于,例如,基于文本哈希值强行强制输出一组歌曲歌词的机会。
DEF SEG=0:FOR I=0 TO 4^8:POKE I,1:NEXT
不知道如何在DOS中定义BSOD或内核恐慌,但这可能非常接近。运行时,屏幕仅变黑,并且机器不响应,甚至没有按Ctrl + Alt + Delete。您必须通过硬重置或关机后重启才能使机器再次运行。它在VirtualBox下的DOS 6.22上运行。不确定为什么会导致系统崩溃,但是基本上,程序正在将(POKE)写入没有业务写入的内存。
COMMAND.COM
存储在低内存地址中的DOS中断向量和程序代码。资料来源:img.tfd.com/cde/MEMMAP.GIF
Linux为init进程提供了针对信号的特殊保护。但是,我注意到在JSLinux中,它/sbin/init
是一个执行其他二进制文件的shell脚本(大多数符号链接到/bin/busybox
)。
此“无限” while循环sh
根据需要重新启动:
while /bin/true; do
setsid sh -c 'exec sh </dev/ttyS0 >/dev/ttyS0 2>&1'
done
但是,如果/bin/true
不总是返回退出代码0,该怎么办?/bin
在只读的根文件系统上,但是Linux允许我们使用“绑定”挂载来更改它:
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
我们得到:
/var/root # ./boom.sh
Killed
Kernel panic - not syncing: Attempted to kill init!
从TI-84计算器执行
:"+"→_[_+_→_]
如果大部分RAM可用,它将崩溃, ERR:MEMORY
否则,计算器的RAM会被阻塞,以至于它会关闭并清除。
“计算器病毒”的一个很好的例子
+
,++
,++++
等,Str0
。它给了我ERR:MEMORY
,但是试图显示Str0
的价值却立即使我的84岁以上的人丧生。另外,这使我失去了所有程序。
:(){ :|:& };:
在bash外壳中,
我不确定这是否有用,但是如果让它运行足够长的CPU过热和系统崩溃,并且它确实可以安全重启,而不会造成损害,当然,如果一直这样做,将会对系统造成一定的损害。
/dev/mem
或/dev/kmem
根据需要从根目录进行修改。
/p*/s*r
)请参阅http://www.kernel.org/doc/Documentation/sysrq.txt并搜索'c'
(包括引号!)以了解其工作原理。
open(Dir['/p*/s*r'][0],?a){|f|f<<?c}
编辑:较长的版本,如果您有其他匹配的东西可以工作 /p*/s*r
open('/proc/sysrq-trigger',?a){|f|f<<?c}
编辑2:故意过大。
:A
start
goto A
通过启动仅在线性时间内溢出内存 cmd.exe
成百上千个成千上万个成千上万个成千上万个成千上万个成千上万个成百上千个成百上千个成百上千的成千上万成千上万次。
有一个更致命的(但可能是非竞争性的)24字节程序不断地自我启动,从而以对数时间溢出内存(即,升级RAM不会延迟崩溃)。假设以下代码位于C:\a.bat
:
:A
start C:\a.bat
goto A
。
老实说,我怕尝试一下。
:() { : | : & }; :
@0
代替C:\a.bat
呢?
1/0
名为的文件driver.c
并不构成有效的内核模式驱动程序。无论如何,获胜者是基于投票,而不是代码长度。