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炸弹
三、实际测试Fork炸弹二。
从下面的测试图片上看出来,运行bomb(){ bomb|bomb& };bomb后会产生大量的新进程,过几秒钟后系统卡死,鼠标无响应,上层的app已经不能work了,但是kernel没有挂,还在打印log。这时候你摸CPU,非常的烫手,所以说这个是很危险的命令。
四、参考文章
1、 https://www.geeksforgeeks.org/fork-bomb/
2、https://*.com/questions/37878541/how-to-crash-a-linux-vm/37878907