很巧妙的进程防杀方法[秋镇菜原创]
生活随笔
收集整理的這篇文章主要介紹了
很巧妙的进程防杀方法[秋镇菜原创]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
剛剛學內核對象,想寫個可以防殺的進程,但其他方法太高級,
本菜鳥不感高攀,想了幾天,想到一個很本的辦法,不正確的
方還請高手指點一下.
程序運行兩個事例,每個實例互相監視另外的實例是否存在,
如果不存在,就運行一個.
代碼:
// test_process.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "tchar.h"
#include "iostream.h"
#include "windows.h"
LPCTSTR lpszMutex1 = _T("mutex1");
LPCTSTR lpszMutex2 = _T("mutex2");
DWORD WINAPI Thread1(LPARAM lParam);
DWORD WINAPI Thread2(LPARAM lParam);
int main(int argc, char* argv[])
{
????HANDLE hMutex1 = CreateMutex(NULL, FALSE, lpszMutex1);
????if (hMutex1 != NULL)
????if (GetLastError() == ERROR_ALREADY_EXISTS)
????{
????????CloseHandle(hMutex1);
????????cout << lpszMutex1 << " already exist." << endl;
????????HANDLE hMutex2 = CreateMutex(NULL, FALSE, lpszMutex2);
????????if (hMutex2 != NULL)
????????if (GetLastError() == ERROR_ALREADY_EXISTS)
????????{
????????????cout << lpszMutex2 << " already exist." << endl;
????????????return 1;
????????}
????}
????DWORD dwThreadId;
????HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread1,NULL,0,&dwThreadId);
????CloseHandle(hThread);
????while (1)
????Sleep(1);
????return 0;
}
DWORD WINAPI Thread1(LPARAM lParam)
{
????HANDLE hMutex;
????while (1)
????{
????????hMutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, lpszMutex1);
????????if (! hMutex)
????????{
????????????STARTUPINFO si = { sizeof STARTUPINFO };
????????????PROCESS_INFORMATION pi;
????????????TCHAR szBuf[MAX_PATH];
????????????GetModuleFileName(GetModuleHandle(NULL), szBuf, MAX_PATH);
????????????CreateProcess(szBuf, NULL, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
????????????CloseHandle(pi.hThread);
????????????CloseHandle(pi.hProcess);
????????}
????????CloseHandle(hMutex);
????????hMutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, lpszMutex2);
????????if (! hMutex)
????????{
????????????cout << "mutex 2 created." << endl;
????????????STARTUPINFO si = { sizeof STARTUPINFO };
????????????PROCESS_INFORMATION pi;
????????????TCHAR szBuf[MAX_PATH];
????????????GetModuleFileName(GetModuleHandle(NULL), szBuf, MAX_PATH);
????????????CreateProcess(szBuf, NULL, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
????????????CloseHandle(pi.hThread);
????????????CloseHandle(pi.hProcess);
????????}
????????CloseHandle(hMutex);
????????cout << "Thread??????..." << endl;
????????Sleep(1);
????}
????return 1;
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
本菜鳥不感高攀,想了幾天,想到一個很本的辦法,不正確的
方還請高手指點一下.
程序運行兩個事例,每個實例互相監視另外的實例是否存在,
如果不存在,就運行一個.
代碼:
// test_process.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "tchar.h"
#include "iostream.h"
#include "windows.h"
LPCTSTR lpszMutex1 = _T("mutex1");
LPCTSTR lpszMutex2 = _T("mutex2");
DWORD WINAPI Thread1(LPARAM lParam);
DWORD WINAPI Thread2(LPARAM lParam);
int main(int argc, char* argv[])
{
????HANDLE hMutex1 = CreateMutex(NULL, FALSE, lpszMutex1);
????if (hMutex1 != NULL)
????if (GetLastError() == ERROR_ALREADY_EXISTS)
????{
????????CloseHandle(hMutex1);
????????cout << lpszMutex1 << " already exist." << endl;
????????HANDLE hMutex2 = CreateMutex(NULL, FALSE, lpszMutex2);
????????if (hMutex2 != NULL)
????????if (GetLastError() == ERROR_ALREADY_EXISTS)
????????{
????????????cout << lpszMutex2 << " already exist." << endl;
????????????return 1;
????????}
????}
????DWORD dwThreadId;
????HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread1,NULL,0,&dwThreadId);
????CloseHandle(hThread);
????while (1)
????Sleep(1);
????return 0;
}
DWORD WINAPI Thread1(LPARAM lParam)
{
????HANDLE hMutex;
????while (1)
????{
????????hMutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, lpszMutex1);
????????if (! hMutex)
????????{
????????????STARTUPINFO si = { sizeof STARTUPINFO };
????????????PROCESS_INFORMATION pi;
????????????TCHAR szBuf[MAX_PATH];
????????????GetModuleFileName(GetModuleHandle(NULL), szBuf, MAX_PATH);
????????????CreateProcess(szBuf, NULL, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
????????????CloseHandle(pi.hThread);
????????????CloseHandle(pi.hProcess);
????????}
????????CloseHandle(hMutex);
????????hMutex = OpenMutex(MUTEX_ALL_ACCESS, TRUE, lpszMutex2);
????????if (! hMutex)
????????{
????????????cout << "mutex 2 created." << endl;
????????????STARTUPINFO si = { sizeof STARTUPINFO };
????????????PROCESS_INFORMATION pi;
????????????TCHAR szBuf[MAX_PATH];
????????????GetModuleFileName(GetModuleHandle(NULL), szBuf, MAX_PATH);
????????????CreateProcess(szBuf, NULL, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi);
????????????CloseHandle(pi.hThread);
????????????CloseHandle(pi.hProcess);
????????}
????????CloseHandle(hMutex);
????????cout << "Thread??????..." << endl;
????????Sleep(1);
????}
????return 1;
}
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的很巧妙的进程防杀方法[秋镇菜原创]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用VC写Assembly代码(6)--附
- 下一篇: oracle aced什么资质,ACOU