现在的位置: 首页 > 综合 > 正文

删除程序自身

2013年10月26日 ⁄ 综合 ⁄ 共 783字 ⁄ 字号 评论关闭

    有时候防止软件被破解,要加入一定的保护,加壳加花加暗桩都是好方法,有时候删除程序自身也可以一定程度的保护自己。下面利用的就是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); //这样解除映射也可
}

抱歉!评论已关闭.