#include <windows.h> #pragma once void SelfDel() { int i; HANDLE hFile; DWORD dwWritten; char selfpathaaa[MAX_PATH]={0}; char command[2048]={0}; char name[]="afc9fe2f418b00a0.bat";//这个嘛 就是我们实现自删除的批处理的文件名 GetModuleFileName(NULL,selfpathaaa,MAX_PATH);//取得自身全部路径外带文件名 lstrcpy(command,"@echo off/n/r");//开始构建字符串 for (i=0;i<10;i++) lstrcat(command,"@echo asdfhdsafjkahlsdjfhlk>>3596799a1543bc9f.aqq/n/r"); lstrcat(command,"@del 3596799a1543bc9f.aqq/n/r");//这几句都是故意写的垃圾代码, lstrcat(command,"@del /"");//好让我们的程序有足够的时间结束自己的运行 lstrcat(command,selfpathaaa);删除exe本身 lstrcat(command,"/"/n/r"); lstrcat(command,"@del ");//删除批处理本身 lstrcat(command,name); lstrcat(command,"/n/r@exit"); hFile=CreateFile(name,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,0,NULL);//把我们构建的字符串写成文件 WriteFile(hFile,(LPCVOID)command,sizeof(command),&dwWritten,NULL); CloseHandle(hFile); WinExec(name,SW_HIDE);//执行批处理 ExitProcess(NULL);//抓紧时间结束自己 }