2021-03-11 Android 让系统崩溃卡死的方法-Fork炸弹

              Android 让系统崩溃卡死的方法-Fork炸弹

 

一、在测试watchdog的时候,需要在kernel 内核正常工作的时候把android系统搞卡死,如果kernel挂的话会直接 it causes a kernel panic 然后重启,达不到目的。方法有一个就是Fork炸弹。

二、Fork炸弹方法一,编译下面简单的C语言程序放到机子上语言,不断的fork出新的进程,消耗进程表空间的同时也会占用CPU和内存,从而导致系统与现有进程运行速度放缓,响应时间也会随之大幅增加,以致于无法正常完成任务,从而使系统的正常运作受到严重影响,直到把系统资源耗尽,卡死无法响应。

// 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炸弹方法二,Jaromil在2002年设计了最为精简的一个Linux Fork炸弹,整个代码只有13个字符,在shell中运行后几秒后系统就会宕机。

:(){ :|:& };:

 上面那个命令我自己运行的时候无效,一定要把:替换生一个函数名,看下面的可以 更好理解一点。

bomb()
{
    bomb|bomb&
};
bomb

解释:

bomb()      # 定义函数,函数名为"bomb",即每当输入"bomb"时就会自动调用{}内代码
{        # "bomb"函数开始标识
    bomb    # 用递归方式调用"bomb"函数本身
    |    # 并用管道(pipe)将其输出引至...(因为有一个管道操作字符,因此会生成一个新的进程)
    bomb    # 再一次递归调用的"bomb"函数
# 综上,"bomb|fbbomb表示的即是每次調用函数"bomb"的時候就会产生两份拷贝
    &    # 即使最初的"bomb"函数被关闭,后台还有两个bomb函数在一直运行
}        # "bomb"函数終止标识
;        # "bomb"函数定义结束后将要进行的操作...
bomb        # 调用"bomb"函数,"引爆"fork炸弹

2021-03-11 Android 让系统崩溃卡死的方法-Fork炸弹

三、实际测试Fork炸弹二。

       从下面的测试图片上看出来,运行bomb(){ bomb|bomb& };bomb后会产生大量的新进程,过几秒钟后系统卡死,鼠标无响应,上层的app已经不能work了,但是kernel没有挂,还在打印log。这时候你摸CPU,非常的烫手,所以说这个是很危险的命令。

2021-03-11 Android 让系统崩溃卡死的方法-Fork炸弹

2021-03-11 Android 让系统崩溃卡死的方法-Fork炸弹

 

四、参考文章

       1、 https://www.geeksforgeeks.org/fork-bomb/

       2、https://*.com/questions/37878541/how-to-crash-a-linux-vm/37878907

上一篇:256-Linux虚拟内存映射和fork的写时拷贝


下一篇:【Java】 Fork/Join 源码分析(三十一)