`
wanghailiang333
  • 浏览: 195335 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

递归经典:fork 炸蛋

阅读更多
在弄Android root的时候发现一个很有趣的东西:fork 炸蛋;(“炸”“弹”被屏蔽……)

随即去网上搜了一下,感觉非常有意思,拿出来和大家分享一下(转)

 

所谓fork炸蛋是一种在Linux操作系统下,使用shell写的恶意程序,fork炸蛋并不需要有特别的权限即可对系统造成破坏。fork炸蛋实质是一个简单的递归程序。由于程序是递归的,如果没有任何限制,这会导致这个简单的程序迅速耗尽系统里面的所有资源。

 

最简单的fork炸蛋:

 

:() { :|:& };:

 

一行看似无法理解的只有13个字符的命令,即可占用掉所有系统的资源。

 

解释:

* 第 1 行说明下面要定义一个函数,函数名为小数点,没有可选参数。<br>
* 第 2 行表示函数体开始。<br>
* 第 3 行是函数体真正要做的事情,首先它递归调用本函数,然后利用管道调用一个新进程(它要做的事情也是递归调用本函数),并将其放到后台执行。<br>
* 第 4 行表示函数体结束。<br>
* 第 5 行并不会执行什么操作,在命令行中用来分隔两个命令用。从总体来看,它表明这段程序包含两个部分,首先定义了一个函数,然后调用这个函数。<br>
* 第 6 行表示调用本函数。<br><br>
冒号”:”其实是函数名,这个bash脚本就是在不断的执行该函数,然后不断fork出新的进程。

 
0
2
分享到:
评论

相关推荐

    java8stream源码-ParallelProgramminginJava:大学莱斯在Coursera上的Java并行编程课程

    周:ForkJoin 框架实现 2000 万个元素的并行互易数组和 第 2 周:Java 8 Streams 过滤收集器以查找对学生数据的运行分析 第 3 周:使用线程块的并行矩阵乘法 第 4 周:使用 Phaser 实现一维迭代平均。 Phasers ...

    Shell脚本经典之Fork炸弹的分析与预防

    fork炸弹介绍 众所周知,bash是一款极其强大的...fork炸弹实质是一个简单的递归程序。由于程序是递归的,如果没有任何限制,这会导致这个简单的程序迅速耗尽系统里面的所有资源。 现在来看看Jaromil设计的最简单的for

    forkjoin:窃取Rust的fork-join并行性库的工作

    叉连接一个窃取fork-join并行性库的工作。 受博客文章的启发,并通过硕士论文。 托管在存储库托管的图书馆文档开发该库的目的是为了满足三种类型的算法的需求,这些算法都非常适合fork-join并行性。减少风格减少样式...

    java fork-join框架介绍

    fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的性能;设计的目的是为了处理那些可以被递归拆分的任务。

    Java中的Fork/Join框架

    设计的目的是为了处理那些可以被递归拆分的任务。  fork/join框架与其它ExecutorService的实现类相似,会给线程池中的线程分发任务,不同之处在于它使用了工作窃取算法,所谓工作窃取,指的是对那些处理完自身任务...

    LPeg:LPeg v1.0的Fork-添加了左递归支持

    脂蛋白 LPeg v1.0.0的前叉-添加了左递归支持。 原始LPeg库( )。 该前叉包含不稳定的修改。

    munael

    深度Diacritization:高效的分层递归,改善阿拉伯语Diacritization COLING WANLP (2020) ; Diacritization 穆罕默德·加布里(Mohamed Gabr) , ,, 2020年 用于低资源条件的改进并行语料库过滤的得分组合 WMT...

    lwjson:为嵌入式系统优化的轻量级JSON解析器

    解析操作期间无递归 重入功能 零拷贝,不使用malloc或free函数 输入字符串的任何空白区域之间的带有/* comment... */语法的内联注释的可选支持 令牌的高级查找算法 提供测试范围 用户友好的MIT许可证 贡献 始终欢迎...

    婚纱摄影网站java源码-Recursion-Practice-Website:RecursionPromptsWithSolutions和D

    Fork 这个 repo 并将它克隆到你的本地机器 在 Web 浏览器中打开SpecRunner.html 在recursion.js中recursion.js您的解决方案 根据需要查看spec/part1.js和spec/part2.js的测试 保存您的工作并刷新浏览器以检查通过/...

    TinyPG, Herre Kuijpers C# 微型解析器生成器的fork.zip

    TinyPG, Herre Kuijpers C# 微型解析器生成器的fork TinyPGHerre Kuijpers的非官方解析器生成器的非官方 fork 。它是由 C# 编写的LL(1) 递归下降解析器生成器,它可以在 C# 或者VB代码中生成扫描器。解析器和解析器...

    linux网络编程

    软件包含多种tcp与udp通信的简单示例,服务器处理客户端请求的方式有:递归、fork子进程、创建线程、select处理多IO等等

    java-fork-join-example

    Java 7引入了一种称为Exk / Join Framework ( )的新型ExecutorService ( ),它在处理递归算法方面表现出色。 与ExecutorService其他实现不同,Fork / Join框架使用工作窃取算法( ),该算法可最大程度地利用...

    Two-fork-tree-storage.zip_二叉树_遍历算法

    使用非递归算法遍历二叉树,在屏幕上打印出二叉树中序遍历序列。

    nlp_overview:应用于自然语言处理的现代深度学习技术概述

    它涵盖了深度学习模型(如递归神经网络(RNN),卷积神经网络(CNN)和强化学习)背后的理论描述和实现细节,用于解决各种NLP任务和应用。 概述还包含NLP任务(例如机器翻译,问题解答和对话系统)的最新结果摘要。...

    cuit-tech-wiki:成都信息工程大学资料分享Wiki Chengdu University of Information Technology Information Sharing Wiki

    ①fork项目建立 git 仓库(必须要递归拉取,否则无法获得子模块) git clone --recursive https://github.com/cuit-tech-wiki/cuit-tech-wiki/ ②安装依赖文件 pip install -r mkdocs-material/requirements.txt ③...

    《linux编程技术》-实验3.doc

     创建子进程一,在子进程中递归打印/home目录中的内容(用exec系列函数调用第二次实验中的代码完成此功能);  1.子进程结束的时候完成以下功能:  打印字符串“Child process exited!”  打印子进程标识符...

    论文研究-并行子树约简方法在软件故障定位中的运用.pdf

    该方法采用设计简单而且对并行计算性能的获取卓有成效的Fork/Join并行计算框架,运用反复递归和划分子任务的方式将目标问题划分成足够精简的子任务,实现了对程序调用图的高效约简。实验结果表明,并行子树约简方法...

    leetcode中国-LeetCode:力码

    leetcode中国力码 简报: 这是一个 LeetCode 练习的存储库,其中许多是 INSAlgo 推荐或用作练习的。 通常 INSAlgo 和国际比赛,更喜欢 Python,但是...java ...尽管递归方式并不总是能提供...fork 这个 repo。 星吧!!

    go4noobs:我学习Golang的进度

    __ ‍:laptop: :woman::laptop: 开发中 :construction: :hammer_and_wrench: __ 此回购协议必须而且将会遭受一些重大更新和修改以及我的学习曲线完全自由地 fork 和 PR 这个 repo 享受!谢谢你特别感谢Ellen Kö...

    leetcode下载-CodingInterviews:《剑指offer》面试题java版,leetcode题目分享

    递归和循环 查找和排序 回溯法 动态规划与贪婪算法 位运算 第三章 高质量的代码 代码的完整性 代码的鲁棒性 第四章 解决面试题的思路 画图让抽象问题形象化 举例让抽象问题具体化 分解让复杂问题简单化 ##第五章 ...

Global site tag (gtag.js) - Google Analytics