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

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

код должен проверять все процессы постоянно, на наличие к примеру открытого Диспетчера, если он открыт, тогда, или консольное сама закрывается, или она убивает моментально этот процесс, при каждом открытии или блокирует открытие данного процесса
 
Участник
Статус
Оффлайн
Регистрация
29 Дек 2019
Сообщения
381
Реакции[?]
168
Поинты[?]
3K
Всем привет, такой вопрос, хочу написать код для консольки.
Проверку на наличие открытой программы, не знаю как лучше pid узнавать или название самого процесса, можете помочь мне пожалуйста в написании данного кода

код должен проверять все процессы постоянно, на наличие к примеру открытого Диспетчера, если он открыт, тогда, или консольное сама закрывается, или она убивает моментально этот процесс, при каждом открытии или блокирует открытие данного процесса
получение пид можно взять с лоадера
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
получение пид можно взять с лоадера
Я его и делаю, только мне нужно что бы ничего не выводило в лоадера консольном в плане пида, чисто проверка, если оно открыто или консоль закрывается или она убивает этот процесс, мне нужен этот код)
Если не сложно, кто-то скиньте пожалуйста
 
When every god dead, I can live a normal life...
Забаненный
Статус
Оффлайн
Регистрация
9 Авг 2020
Сообщения
328
Реакции[?]
48
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Первая страница по запросу в гугле
 
Забаненный
Статус
Оффлайн
Регистрация
22 Мар 2021
Сообщения
1,019
Реакции[?]
315
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
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"); // проверка на диспетчер задач
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
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;
}
Как-то так.
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
C++:
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;
}
Как-то так.
А какой код автоматического закрытия консоли?

там где тут что-то делаем
 
Участник
Статус
Оффлайн
Регистрация
26 Июн 2020
Сообщения
1,114
Реакции[?]
210
Поинты[?]
8K
А какой код автоматического закрытия консоли?

там где тут что-то делаем
Ты хоть сам понял, что написал? Программа выполняет код, после сама закрывается, можешь поставить sleep или input
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Ты хоть сам понял, что написал? Программа выполняет код, после сама закрывается, можешь поставить sleep или input
Да,я понял что написал, меня человек тоже понял, возможно не корректно ответил, но меня поняли
Спс
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Я попробовал кстати этот код только что, я открыл диспетчер задач и у меня консоль не закрывалась
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
Всем привет, такой вопрос, хочу написать код для консольки.
Проверку на наличие открытой программы, не знаю как лучше pid узнавать или название самого процесса, можете помочь мне пожалуйста в написании данного кода

код должен проверять все процессы постоянно, на наличие к примеру открытого Диспетчера, если он открыт, тогда, или консольное сама закрывается, или она убивает моментально этот процесс, при каждом открытии или блокирует открытие данного процесса
Какой толк от таких действий, если вся эта система обходится простым хуком NtQuerySystemInformation?
 
Keine panik!
Эксперт
Статус
Оффлайн
Регистрация
29 Апр 2020
Сообщения
812
Реакции[?]
417
Поинты[?]
49K
блокирует открытие данного процесса
Это не сделать нормально из юзермода.
Если ты хочешь полноценный контроль, то нужно лезть в ядро, там тебе и уведомления о процессах и права убить кого угодно.
Иначе только периодически проверять по списку процессов как тебе предложили выше (только с нормальным кодом) и принимать какие-то действия, себя закрыть можно всегда, а другой процесс только если у тебя есть привилегии.
 
Начинающий
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
360
Реакции[?]
21
Поинты[?]
0
Какой толк от таких действий, если вся эта система обходится простым хуком NtQuerySystemInformation?
я уже это понял((

Защиту просто делаю, не знаю какую взять, возможно подскажешь где стоит хорошая защита?
я могу взять её на какое-то время
 
Олдфаг
Статус
Оффлайн
Регистрация
18 Фев 2019
Сообщения
2,826
Реакции[?]
1,853
Поинты[?]
24K
я уже это понял((

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