@SaddledSharp
Кодер. Увлекаюсь информационной безопасностью.

Как проверять запущен ли процесс и если не запущен — запустить?

Всем привет.
Мне нужно защитить программу при подозрительном процессе, то есть если процесс задетекчен - включить защиту, хочу я сделать это так:
1. Создать бат файл, запустить его и он будет постоянно проверять запущен ли мой "антивирус", если он закрылся - опять его запустить
2. Создать VBS файл и так же запустить и проверять.
Помогите сделать правильно, а то один раз сделал и у меня почему то кучу раз запускалось в итоге комп зависал.
Последний код был таким:
@echo off
chcp 1251
set ProcessName="avr.exe"
cls
TaskList /FI "ImageName EQ % ProcessName % " | Find /I %ProcessName%>nul||(
ping localhost -w 3000 > nul
start C:\Users\Asus\source\repos\avr\avr\bin\Debug\avr.exe
)

Это бат, но когда я запускал его в программе - у меня тупо по сто раз открывалось и комп зависал.
Хелп)0
  • Вопрос задан
  • 1159 просмотров
Решения вопроса 1
1) Сделать его службой, с автозапуском.
2) Сделать два процесса, которые смотрят друг на друга, и при необходимости "подымают" (такое использовалось при атаке на атомные электростанции, Марк Руссинович своими утилитами на докладе вычищал это дело). Чтобы не запускалось копий больше чем необходимо можно использовать объект синхронизации ядра (это пару строк на C#).

Вот видео с привязкой ко времени с Марком - https://youtu.be/bNJ3HR6Z0v8?t=1964

О, обратил внимание что вы увлекаетесь ИБ, я там около года крутился, столько всего насмотрелся, что в интернет боюсь заходить :)
Рекомендую связаться с ребятами из Pentestit, там и чат есть.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
В целом логика вроде правильная.
Убедитесь в консоли, что команды:
TaskList /FI "ImageName EQ % ProcessName % " | Find /I %ProcessName% || (echo start process)

правильно срабатывают при запущенном процессе и при отсутствии процесса.
Кстати, у вас в tasklist знаки процентов обрамляющие ProcessName написаны через пробел. Их нужно писать слитно. Возможно в этом причина ошибки: % ProcessName %
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы