让一台电脑死机简直是易如反掌,而在某个程度来说又是难于登天,这主要就看你对于这台电脑的权限到底拥有多少。
如果你是系统的管理员,有比较高的权限,甚至这台机器本身就是你自己的机器,你直接拥有最高权限。那就应了那句“你有无数种作死的方法,就看你喜欢哪种了”。比如直接强制擦写根分区设备,或者删除强制删除所有系统文件,或者强制占用重要系统资源到枯竭,甚至是自己手动触发调试性panic,等等等等,想弄死自己简直不能再简单。
如果你不是系统管理员,你在这个系统上没有任何特权。那你可以在管理员没有给你设置“限额”的资源上(如进程、内存、网络等)无限的占用,无限的使用占有资源,让其他人无法获得。如果限制更多,那只能像黑客一样偷偷摸摸的进去,小心的搞事情,难于登天。
在win98年代,这是一件特别简单的事情,任何局域网里共享了文件夹的电脑,在其共享目录地址后加入/con/con 回车即可让目标机器蓝屏死机。
而在现在,电脑自身也迭代发展,需要做出更多努力,学习更多知识才能做到这点。特别是现在很多都有云技术的加持,某些方面已经做不到了。
我们就通过让电脑死机的方向,学习一下编程的知识。
对于普通电脑,没装linux等操作的人来说,可以试试在左下角输入cmd回车, 然后输入
set /p="%0|%0"s.bat&s
你要没跳出来cmd, 那新建个txt,打入下面这一行,然后后缀改为.bat,运行后慢慢等待,多久死机看机子配置……上面两个渠道效果都一样。
%0 | %0
原理是64位有2^64字节虚拟内存远超过实际内存,所以下面循环执行到内存不够的时候,内核会调度swap分区(windows下对应swap文件),从而占光cpu和内存资源,同时也会卡磁盘io。未必一定成功,超出设定的交换分区大小上限后可能被内核干掉。这就纯粹是看运气咯。但大家千万别试。
而在虚拟机上,方法不同但也很简单。
linux中很多人都知道rm -rf这个从删库到跑路的代码,但其实chmod 000 -R /*更有用,rm -rf是不发给你反应时间直接全部没有,而chmod 000 -R /*就像不可治愈的慢性病毒,你后悔给自己种这种病毒,但你只能眼睁睁看着它蚕食你的身体,你却无能为力。丝毫不给你反悔的机会。
虽然文件可以救出来,把硬盘插其他电脑即可。但拿到手会发现,权限全乱了。对于很多公司业务来说,这种方法更糟糕。
如果你真的想试试sudo rm –rf /,那可以在后面加上reboot,正儿八经的等rm -rf执行完,reboot直接提示找不到命令。
fork炸弹也是如此,条条大路通罗马,很多人就是喜欢在这条道路上前仆后继,fork的原理是不断fork新的进程,占用系统的cpu和内存资源,但不是总能成功,比如内核会将整个进程树干掉。
:(){:|:&};:
条条大路通罗马,但就是可能倒在起点上。在初始化CPU的BIOS代码里放上这段,最好是没有配置好各种向量表之前。会比较麻烦,要求也会很多,但在起跑线上转圈圈也不失为一种好办法。
FFFFFF94 B880080080 mov eax,0x80000880
FFFFFF99 66BAF80C mov dx,0xcf8
FFFFFF9D EF out dx,eax
FFFFFF9E EAFAFFFFFF0800 jmp dword 0x8:0xfffffffa
...
FFFFFFFA 80C204 add dl,0x4
FFFFFFFD B002 mov al,0x2
FFFFFFFF EE out dx,al
在各种向量表都没有初始化的时候触发一个EIP溢出,会报错,但溢出向量什么的都没有初始化,CPU就懵逼了,然而Intel的EIP溢出是不会报错的,只会绕回0x0继续跑。
以上几种方法只是学习原理之用,切不可去实践。
如果有一个按钮一直摆在你面前,上面写的不要按,你会按么?我想我会。但记得忍住,在(电脑)寿终正寝的时候再去满足自己这个小小的心愿。