Насколько правильное решение и возможные другие пути решения
Цитата: Иван от 17.04.2023, 14:49Здравствуйте, товарищи!
У меня есть программа, у которой есть необходимость в асинхроне постоянно искать новые данные в базе и исходя из новых данных действовать в определенном ключе, например, если в базе есть запись с приложением, то процесс этого приложения необходимо убить моментально и вывести сообщение на экран.
так вот, есть бесконечный цикл вайл, который запускается в отдельном потоке каждые 15 мс, проходит по всей базе, и из списка загруженного из базы ищет соответстия по текущим процессам и убивает процесс, если находит совпадение. После вызывается сообщение. Все работает и не нагружает систему.
Насколько такому решению есть место быть? и какие могут быть аналоги данного решения. Как ещё можно блокировать вызов приложения?
Это все необходимо в целях изучения антивирусов и защиты ПО, хотелось бы рассмотреть данную проблему поближе. Все функционирует под C#. Спасибо заранее.
Здравствуйте, товарищи!
У меня есть программа, у которой есть необходимость в асинхроне постоянно искать новые данные в базе и исходя из новых данных действовать в определенном ключе, например, если в базе есть запись с приложением, то процесс этого приложения необходимо убить моментально и вывести сообщение на экран.
так вот, есть бесконечный цикл вайл, который запускается в отдельном потоке каждые 15 мс, проходит по всей базе, и из списка загруженного из базы ищет соответстия по текущим процессам и убивает процесс, если находит совпадение. После вызывается сообщение. Все работает и не нагружает систему.
Насколько такому решению есть место быть? и какие могут быть аналоги данного решения. Как ещё можно блокировать вызов приложения?
Это все необходимо в целях изучения антивирусов и защиты ПО, хотелось бы рассмотреть данную проблему поближе. Все функционирует под C#. Спасибо заранее.
Цитата: Viсtor от 22.04.2023, 07:36Привет 👋. На точность ответа не претендую, так как подобные задачи не решал, и пока не работаю с базами данных. Консультировался с ChatGPT. С логической точки зрения лучше вообще не дать запрещенным процессам запускаться. В идеале, что-то типа EasyHook в нем можно перехватывать системные функции(создания процесса) на уровне драйвера, у него он свой вроде. С EasyHook никогда не работал. Опрашивать постоянно базу данных так же вредит производительности. Лучше закэшировать список и обновлять его по событиям, если есть доступ к настройкам базе данных, нужно использовать нативные функции для создания уведомлений об изменениях таблиц. Также есть вопросы о том как идентифицировать процесс. Простого имени недостаточно в том контексте, что злоумышленник может в определённый степени модифицировать искомый процесс. Ну а как говорится "на коленке", и это вариант вроде рабочий.
Привет 👋. На точность ответа не претендую, так как подобные задачи не решал, и пока не работаю с базами данных. Консультировался с ChatGPT. С логической точки зрения лучше вообще не дать запрещенным процессам запускаться. В идеале, что-то типа EasyHook в нем можно перехватывать системные функции(создания процесса) на уровне драйвера, у него он свой вроде. С EasyHook никогда не работал. Опрашивать постоянно базу данных так же вредит производительности. Лучше закэшировать список и обновлять его по событиям, если есть доступ к настройкам базе данных, нужно использовать нативные функции для создания уведомлений об изменениях таблиц. Также есть вопросы о том как идентифицировать процесс. Простого имени недостаточно в том контексте, что злоумышленник может в определённый степени модифицировать искомый процесс. Ну а как говорится "на коленке", и это вариант вроде рабочий.