叉子炸弹

先决条件: C中的fork() Fork Bomb是一个程序,它会导致系统内存不足,从而对系统造成危害。它无限地分叉进程以填满内存。fork bomb是一种针对基于Linux的系统的拒绝服务(DoS)攻击。 一旦一个成功的叉形炸弹在一个系统中被激活,可能不可能在不重新启动系统的情况下恢复正常操作,因为叉形炸弹的唯一解决方案是销毁它的所有实例。

null

叉形炸弹的C程序

C

// C program Sample  for FORK BOMB
// It is not recommended to run the program as
// it may make a system non-responsive.
#include <stdio.h>
#include <sys/types.h>
int main()
{
while (1)
fork();
return 0;
}


Fork-Bomb的Bash脚本

笔记 :请不要运行此命令来“测试”它,除非您准备好崩溃和/或强制重新启动系统。此外,它不需要root来运行。 如果您使用的是terminal,那么bash脚本for fork()bomb脚本如下所示。

:(){ :|: & };:

逐步解释脚本:

  1. :() 表示您正在定义一个名为:
  2. {:|: &} 意味着运行函数:并再次将其输出发送到:函数,然后在后台运行该函数。
    • : –将“:”函数的另一个副本加载到内存中
    • | –并将其输出输送至
    • : –另一个必须加载到内存中的“:”函数副本
    • 因此 ‘:|:’ 只要在调用“:”时加载“:”的两个副本即可
    • & –断开功能,如果第一个“:”被终止,则它已启动的所有功能不应自动终止
    • } –当我们说“:”时,该做什么就结束了
  3. ; 命令分隔符
  4. : 第一次运行函数

从本质上讲,您正在创建一个函数,该函数每次调用两次自身,并且没有任何方法终止自身。它会一直加倍,直到系统资源耗尽。

工作原理

分叉炸弹的工作方式既包括分叉过程中消耗CPU时间,也包括使操作系统的进程表饱和。叉形炸弹的一个基本实现是一个无限循环,它会反复启动自身的新副本。 为了使一个系统失效,它们依赖于一个假设,即计算机上同时执行的程序和进程的数量。fork()将生成新的进程,但如果将此进程放入while true循环,那么它将创建许多进程,当超过限制时,系统将崩溃。

防止爆炸的方法

  • 避免在任何可能最终进入无限循环的语句中使用fork。
  • 您可以按以下方式限制fork的过程:- 只需以root用户身份登录并编辑此文件,即可添加用户并配置其限制。
# vi /etc/security/limits.conf

将文件编辑为:

 your_user_name hard nproc 10
  • 如果想运行该命令,可以尝试在Virtualbox中运行该命令。
  • 直接关闭你的系统,以防你已经运行了它,却找不到继续运行的方法。

参考资料:

本文由 达瓦库马尔·普拉贾帕蒂 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享