软件运行后需要进行自我删除,于是就需要运用自删除技术,自删除技术有许多种,这里主要介绍利用远程技术完成自删除。
首先要获取本进程的名称,构造进程的命令参数,设置本进程的优先级为实时优先级,其次,创建远程进程),设置远程进程的优先级优先级为很低的IDLE。
所需要的函数:
头文件
#include<afx.h>
#include "stdafx.h"
#include<afxdlgs.h>
#include <WinDef.h>
GetModuleFileName
GetShortPathName
STARTUPINFO startinfo = { 0 };
PROCESS_INFORMATION processinfo = { 0 };
si.cb = sizeof(si);
startinfo.dwFlags = STARTF_USESHOWWINDOW;
startinfo.wShowWindow = SW_HIDE;
//set real time priority
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentProcess(), THREAD_PRIORITY_TIME_CRITICAL);
CreateProcess(0, szComspec, 0, 0, 0, CREATE_SUSPENDED | DETACHED_PROCESS, 0, 0, &startinfo, &processinfo)
SetPriorityClass(processinfo.hProcess, IDLE_PRIORITY_CLASS);
SetThreadPriority(processinfo.hThread, THREAD_PRIORITY_IDLE);
ResumeThread( processinfo.hThread);