基本信息
源码名称:C++ MFC进程保护防止被结束程序
源码大小:0.16M
文件格式:.zip
开发语言:C/C++
更新时间:2017-07-03
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 20 元 
   源码介绍

C MFC程序 防止进程被结束

void CSelfProctectDlg::OnBnClickedProtect()
{
CString ExeName;
GetDlgItemText(IDC_EXENAME,ExeName);
DWORD ProcessID=ProcessFind(ExeName);
if (!ProcessID)
{
MessageBox(_T("未找到目标进程!"));
return;
}
IsProtect=TRUE;
SetProcessID(ProcessID);
if (GetProcessID()!=ProcessID)
{
MessageBox(_T("设值错误!"));
}
GetDlgItem(IDC_PROTECT)->EnableWindow(FALSE);
}


BOOL InjectDLL(LPCTSTR DLLPath,DWORD ProcID)
{
HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,TRUE,ProcID);
if (!hProcess)
{
return FALSE;
}
SIZE_T PathSize=(_tcslen(DLLPath) 1)*sizeof(TCHAR);
LPVOID Startaddr=VirtualAllocEx(hProcess,NULL,PathSize,MEM_COMMIT,PAGE_READWRITE);
if (!Startaddr)
{
return FALSE;
}
if (!WriteProcessMemory(hProcess,Startaddr,DLLPath,PathSize,NULL))
{
return FALSE;
}
LPTHREAD_START_ROUTINE pfnc=(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(_T("kernel32.dll")),"LoadLibraryW");
if (!pfnc)
{
return FALSE;
}
HANDLE hThread=CreateRemoteThread(hProcess,NULL,NULL,pfnc,Startaddr,NULL,NULL);
if (!hThread)
{
return FALSE;
}
return TRUE;
}

void CSelfProctectDlg::OnTimer(UINT_PTR nIDEvent)
{
TaskmgrID=ProcessFind(_T("taskmgr.exe"));
if (!TaskmgrID)
{
SetDlgItemText(IDC_STATUS,_T("Windows任务管理器目前未运行!"));
}
else if (TaskmgrID==OldTaskmgrID && Protected)
{
CDialog::OnTimer(nIDEvent);
return;
}
else if(TaskmgrID!=OldTaskmgrID && IsProtect==TRUE)
{
CString num;
num.Format(_T("正在运行,ID为:%d"),TaskmgrID);
SetDlgItemText(IDC_STATUS,num);
OldTaskmgrID=TaskmgrID;
if (IsProtect)
{
if (InjectDLL(_T("d:\\VCTest\\新建文件夹\\SelfProctect\\x64\\Debug\\Protect.dll"),TaskmgrID)!=TRUE)
{
SetDlgItemText(IDC_PROTECT,_T("注入失败!"));
}
Protected=TRUE;
}
}
CDialog::OnTimer(nIDEvent);
}