星光尽头

科技与人文的那个交集

M.J

ForkBomb

我们一直用的操作系统,其实都很容易崩溃。
在Linux下,只要在Bash下(注意只有Bash才行 )执行如下命令就可以让计算机失去响应: :(){ :|:& };:
在Windows下,只要编写一个bat脚本,内容如下
%0|%0
然后双击执行,即便是windows 8.1也会崩溃。

其实原理很简单,就是利用脚本让系统无限创建新进程,当新进程大到一定数量,系统便会无力对外界输入进行响应了。这种方式叫做Forkbomb(进程炸弹)
这和拒绝攻击(DOS)类似,都是耗尽系统资源,达到使之无法提供服务的目的。

在Linux下执行 :(){ :|:& };:,其实就是编写了一个名为:的函数,不断调用自身并将返回值传给一个:函数(会创建新进程并后台运行)
这条命令只在bash下有用,因为在ksh下,内置命令优先级高于函数,而:又是一个内置命令,所以:不会调用自身,不会形成递归。
所以我们可以替换下:
forkbomb() { forkbomb|forkbomb & };forkbomb
这样ksh下也能成功执行forkbomb(未测试过)

在windows下的%0表示脚本自身的完全路径,%0|%0即将自身路径作为参数传给自身(会后台新启动一个进程),所以也会无限制创建新进程,原理与Linux的语句类似。

2014/05/10 0 / /
标签:  暂无标签

8 + 7 =

回到顶部