嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 20 元微信扫码支付:20 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
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);
}