Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

C++ Проверка Процесса на открытие

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
362
Реакции
21
Всем привет, такой вопрос, хочу написать код для консольки.
Проверку на наличие открытой программы, не знаю как лучше pid узнавать или название самого процесса, можете помочь мне пожалуйста в написании данного кода

код должен проверять все процессы постоянно, на наличие к примеру открытого Диспетчера, если он открыт, тогда, или консольное сама закрывается, или она убивает моментально этот процесс, при каждом открытии или блокирует открытие данного процесса
 
Всем привет, такой вопрос, хочу написать код для консольки.
Проверку на наличие открытой программы, не знаю как лучше pid узнавать или название самого процесса, можете помочь мне пожалуйста в написании данного кода

код должен проверять все процессы постоянно, на наличие к примеру открытого Диспетчера, если он открыт, тогда, или консольное сама закрывается, или она убивает моментально этот процесс, при каждом открытии или блокирует открытие данного процесса
получение пид можно взять с лоадера
 
получение пид можно взять с лоадера
Я его и делаю, только мне нужно что бы ничего не выводило в лоадера консольном в плане пида, чисто проверка, если оно открыто или консоль закрывается или она убивает этот процесс, мне нужен этот код)
Если не сложно, кто-то скиньте пожалуйста
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Первая страница по запросу в гугле
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
bool process_exists(const char* const processName)
{
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnapshot, &pe);

    while (1) {
        if (strcmp(pe.szExeFile, processName) == 0) return true;
        if (!Process32Next(hSnapshot, &pe)) return false;
    }
}

// как использовать
bool taskmgr = process_exists("taskmgr.exe"); // проверка на диспетчер задач
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
Expand Collapse Copy
typedef std::map<std::string, std::string> isProcess;
static isProcess pProcess =
{
    { "MyProcess.exe",  "Мой процесс"},
    { "taskmgr.exe",  "Диспетчер задачь" }
};

int EnumerateProcs(void)
{
    //создаем "снимок" информации о процессах
    //первый параметр функции - константа, определяющая,
    //какую информацию нам нужно "снять", а второй -
    //идентификатор процесса, к которому относится эта
    //информация. В данном случае это 0 т.к. мы делаем
    //снимок всех процессов
    HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    bool bIsok = false;
    //Структура, в которую будут записаны данные процесса
    PROCESSENTRY32 ProcEntry;
    //установим ее размер, это необходимое действие
    ProcEntry.dwSize = sizeof(ProcEntry);
    //теперь определим первый процесс
    //первый параметр функции - хэндл "снимка" информации
    //второй - адрес структуры PROCESSENTRY32
    //true - в случае удачи, false - в случае неудачи
    bIsok = Process32First(pSnap, &ProcEntry);
    //здесь можно было вставить роскошный цикл for(....) но это
    //не совсем удобочитаемо
    //так что цикл while
    while (bIsok)
    {
        isProcess::iterator it = pProcess.begin();
        for (; it != pProcess.end(); ++it)
        {
            if (strstr(ProcEntry.szExeFile, it->first))
            {
                //Тут что-то делаем
            }
        }

        bIsok = Process32Next(pSnap, &ProcEntry);

    }
    //чистим память!
    CloseHandle(pSnap);
    return 1;
}

Как-то так.
 
C++:
Expand Collapse Copy
typedef std::map<std::string, std::string> isProcess;
static isProcess pProcess =
{
    { "MyProcess.exe",  "Мой процесс"},
    { "taskmgr.exe",  "Диспетчер задачь" }
};

int EnumerateProcs(void)
{
    //создаем "снимок" информации о процессах
    //первый параметр функции - константа, определяющая,
    //какую информацию нам нужно "снять", а второй -
    //идентификатор процесса, к которому относится эта
    //информация. В данном случае это 0 т.к. мы делаем
    //снимок всех процессов
    HANDLE pSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    bool bIsok = false;
    //Структура, в которую будут записаны данные процесса
    PROCESSENTRY32 ProcEntry;
    //установим ее размер, это необходимое действие
    ProcEntry.dwSize = sizeof(ProcEntry);
    //теперь определим первый процесс
    //первый параметр функции - хэндл "снимка" информации
    //второй - адрес структуры PROCESSENTRY32
    //true - в случае удачи, false - в случае неудачи
    bIsok = Process32First(pSnap, &ProcEntry);
    //здесь можно было вставить роскошный цикл for(....) но это
    //не совсем удобочитаемо
    //так что цикл while
    while (bIsok)
    {
        isProcess::iterator it = pProcess.begin();
        for (; it != pProcess.end(); ++it)
        {
            if (strstr(ProcEntry.szExeFile, it->first))
            {
                //Тут что-то делаем
            }
        }

        bIsok = Process32Next(pSnap, &ProcEntry);

    }
    //чистим память!
    CloseHandle(pSnap);
    return 1;
}

Как-то так.
А какой код автоматического закрытия консоли?

там где тут что-то делаем
 
А какой код автоматического закрытия консоли?

там где тут что-то делаем
Ты хоть сам понял, что написал? Программа выполняет код, после сама закрывается, можешь поставить sleep или input
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ты хоть сам понял, что написал? Программа выполняет код, после сама закрывается, можешь поставить sleep или input
Да,я понял что написал, меня человек тоже понял, возможно не корректно ответил, но меня поняли
Спс
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Всем привет, такой вопрос, хочу написать код для консольки.
Проверку на наличие открытой программы, не знаю как лучше pid узнавать или название самого процесса, можете помочь мне пожалуйста в написании данного кода

код должен проверять все процессы постоянно, на наличие к примеру открытого Диспетчера, если он открыт, тогда, или консольное сама закрывается, или она убивает моментально этот процесс, при каждом открытии или блокирует открытие данного процесса
Какой толк от таких действий, если вся эта система обходится простым хуком NtQuerySystemInformation?
 
блокирует открытие данного процесса
Это не сделать нормально из юзермода.
Если ты хочешь полноценный контроль, то нужно лезть в ядро, там тебе и уведомления о процессах и права убить кого угодно.
Иначе только периодически проверять по списку процессов как тебе предложили выше (только с нормальным кодом) и принимать какие-то действия, себя закрыть можно всегда, а другой процесс только если у тебя есть привилегии.
 
Какой толк от таких действий, если вся эта система обходится простым хуком NtQuerySystemInformation?
я уже это понял((

Защиту просто делаю, не знаю какую взять, возможно подскажешь где стоит хорошая защита?
я могу взять её на какое-то время
 
я уже это понял((

Защиту просто делаю, не знаю какую взять, возможно подскажешь где стоит хорошая защита?
я могу взять её на какое-то время
В паблике, лично я, ничего годного не видел.
 
Назад
Сверху Снизу