Страницы

Поиск по вопросам

пятница, 29 марта 2019 г.

c# Как обнаружить вторжение в память своей программы

Существуют различные программы по захвату текста с форм (например в ЯП Autoit, есть функция ControlGetText, которая считываем с контролера текст), есть программы, которые вообще позволяют влезать в память процесса, такие как Cheat Engine (например).
Собственно вопрос. Есть ли способ обнаружения "вторжения" в память своей программы? Как это можно реализовать? В какую сторону копать?


Ответ

Нашел интересный ответ
Ничего не мешает злоумышленнику заморозить ваш процесс, сделать все необходимые действия и убить процесс => процесс не узнает ничего о том, что кто-то его читал. Можно так сделать дамп памяти и опять же процесс не будет знать, что кто-то читал его память.
Существуют дебаггеры, которые позволяют перелопатить ваш процесс по косточкам.
Как вы указали в своем вопросе, то самые банальный пример- это взлом компьютерных игр. Если бы разработчики имели универсальное решение, то все бы читеры давно вымерли, а они все плодятся и плодятся => нельзя защитить память своего приложение. Разработчики вынуждены использовать анти-читы и ловить подозрительные активности игроков.
Закрытость платформы, где юзер имеет ограниченные возможности, может обеспечить защиту от взлома процесса. Например, игровые консоли.
Еще один выход- это хранить важную информацию на сервере, куда злоумышленник имеет меньшую вероятность попасть и время от времени выполнять верификацию клиента. Так, обычно, делается в ММОРПГ.
Подводя итог: Вы больше всего зависите от среды в которой работает ваше приложение. Если она имеет API для обнаружения, то используйте его, в противном случае у вас нету никаких возможностей, так как памятью рулит ОС, а не вы.
Например, у Windows есть DEP, который мониторит память и предотвращает запуск вредоносного кода из стороннего процесса.

Комментариев нет:

Отправить комментарий