процесс самообороны как антивирус - PullRequest
2 голосов
/ 29 декабря 2010

Я пишу программу для системы защиты, антивирусной защиты от вредоносных программ и т. Д. И у меня есть проблема с защитой процесса от убийства через Tast Manager-> Kill Process.Я проверяю некоторые антивирусы, и они не позволяют мне убить его процесс.Я могу только остановить их в службах.Как я могу создать эту защиту для моей программы.Спасибо!

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Остановка процесса осуществляется с помощью вызова TerminateProcess (Win32 API).По умолчанию невозможно завершить процесс, который выполняется в контексте безопасности, отличном от того, который выполнялся в TerminateProcess.

Можно настроить службу, работающую в пользовательском режиме (с помощью управления службами).менеджер) так, что он будет перезапущен, если кто-то убивает службу.Однако если вы не хотите, чтобы служба была остановлена ​​из интерфейса диспетчера управления службами или с помощью команды «net stop», вы можете соответствующим образом установить поле «dwControlsAccepted» структуры SERVICE_STATUS при создании службы.

Также сохраняйтеэто с учетом того, что можно завершить любой процесс, даже если это сервис или системный процесс, предварительно включив привилегию отладки.Эта привилегия назначена администраторам и отключена в маркере доступа.В то время как диспетчер задач не использует привилегию отладки, утилита KILL (поставляется с комплектом ресурсов Windows) делает это.

0 голосов
/ 29 декабря 2010

То, что вы наблюдаете, характерно для сервисных приложений, т. Е. Для этого вам нужен сервис.

Антивирусное программное обеспечение обычно использует несколько драйверов режима ядра (сетевые фильтры, фильтры файловой системы и т. Д.), Которые имеют дополнительную функцию проверки доступности процесса в пользовательском режиме и, если нет, перезапускают его (они также контролируют выполнение). Государство за услугу).

Также служба может отслеживать присутствие процесса пользовательского интерфейса и перезапускать его. И процесс пользовательского интерфейса в свою очередь может проверить состояние службы. Довольно сложно (хотя и возможно) остановить оба процесса параллельно, поэтому эта схема также может работать.

Полагаю, вы придете к той же архитектуре.

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

...