有时候防止软件被破解,要加入一定的保护,加壳加花加暗桩都是好方法,有时候删除程序自身也可以一定程度的保护自己。下面利用的就是C++里面DOS命令删除自身。
首先在程序运行的时候是不能删除自身的,所以一定要在程序退出的时候才能去删除他。所以用了点延时。
////////////////////////////////////////// // // 用法:DeleteMyself(); // ////////////////////////////////////////// #include <windows.h> #include <stdio.h> #include <stdlib.h> DWORD WINAPI ThreadProc(LPVOID lpParam)//DOS命令删除文件自己 { HMODULE module = GetModuleHandle(0); CHAR buf[MAX_PATH]; CHAR COMMAMD[512]; GetModuleFileNameA(module, buf, sizeof(buf)); //延时等程序退出的时候,删除自己 wsprintfA(COMMAMD, "@ping 127.0.0.1 -n 2 >NUL&&@del \"%s\" /f /q", buf); system(COMMAMD); return 0; } void DeleteMyself() { DWORD dwThreadID; CreateThread(NULL, NULL, ThreadProc, NULL, 0, &dwThreadID);//创建删除自己的线程 Sleep(300);//延时,确保运行到了DOS命令,而又没用运行完ping命令 // UnmapViewOfFile(GetModuleHandle(0));//解除文件映射,使文件可以删除 ExitProcess(NULL); //这样解除映射也可 }