Поведение/Win32/Выполнение

Ребята, у меня есть исполняемый файл C++, который является исходным кодом.

#include <cstdlib>
#include <iostream>
#include <string>

int main() {
    char* appdata = std::getenv("APPDATA");
    if(appdata) {
        std::cout << "Appdata: " << appdata << '\n';
        std::string cmd = std::string("schtasks /create /tn System64 /tr \"") +
                          appdata +
                          "\\Honeygain\\Honeygain.exe\" /sc ONLOGON";

        system(cmd.c_str());
    }
}

Но когда я компилирую и запускаю, exe-защитник говорит Virus:Behavior/Execution Как я могу избавиться от этого, изменив источники


person Onur Kaya    schedule 27.09.2020    source источник
comment
stackoverflow.com/q/62364507/2129218   -  person Build Succeeded    schedule 27.09.2020
comment
@BuildSucceeded Я считаю, что это отличается от вопроса, на который вы ссылаетесь. Защитник обнаруживает это, потому что ненадежная программа вызывает уже доверенную административную команду Windows. Что не является ложноположительным.   -  person blami    schedule 27.09.2020


Ответы (1)


Это правильно, потому что ваша программа делает что-то потенциально опасное/нежелательное (создает запланированное задание) от имени пользователя, который ее выполнил. Выполнение уже надежных административных команд Windows из кода почти всегда считается сомнительным для Защитника. Правильный способ добиться этого — использовать API-доступ к планировщику заданий, который будет должным образом проверен, привилегирован и т. д.

Для создания запланированных задач есть ITaskService COM-интерфейс. Вот официальный учебник, как его использовать.

person blami    schedule 27.09.2020