Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/19: Рейтинг темы: голосов - 19, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
1
.NET 4.x

Защита процесса от внедрения

29.05.2014, 22:44. Показов 3701. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Не подскажет ли кто мне как защитить процесс [NameProc] от внедрения в него каких dll и тому подобное.. Т.е. защитить процесс от взаимодействия с другими программами. Если кто то затронул процесс [NameProc], то он завершается

Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.05.2014, 22:44
Ответы с готовыми решениями:

Защита процесса от закрытия(убийства)
Тестил код этот BLOCK KILL 1)Подключаем пространство имен необходимых нам библиотек: using...

Защита процесса от вмешательства пользователя (взлома)
Всем доброго времени суток.Необходимо написать программу которая будет мониторить некоторый процесс...

Управление правилами и информацией запущеного процесса а также его защита
Доброе утро, день или вечер. А может быть и вовсе ночь)) Сейчас веду сразу 2 проекта: 1. Античит...

Библиотеки процесса, защита от изменения процесса
Здраствуйте. 1) Как можно получить список библиотек (dll, asi), которые уже загружены в процесс...

15
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
29.05.2014, 22:59 2
А от кого защищаемся ? От администраторов защищаться бесполезно,
они и так полноправные хозяева системы, могут творить все, что угодно.
От обычных пользователей (т.н. "standard users") лучше всего
защищаться повышением своего процесса до уровня администратора.
Правда, такая защита стала полноценно работать только начиная с Vista.
Другие защиты сложны и требуют всяких драйверов и т.п.
1
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
29.05.2014, 23:20  [ТС] 3
Должна защищаться не моя программа.. а стороняя.. т.е. моя программа "А" защищает программу "Б" от внедрений и изменений другими программами
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2014, 09:41 4
Сути написанного выше это не меняет.
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
30.05.2014, 09:43  [ТС] 5
Ну а наблюдать за процессом как??
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2014, 09:54 6
Цитата Сообщение от ivleb Посмотреть сообщение
Ну а наблюдать за процессом как??
В том-то и дело, что таких функций нет. Отследить, когда кто-то открывает
процесс с правами на запись, уничтожение или создание удаленных потоков,
вы не сможете. По крайней мере, из режима пользователя. Ну если только
не похукать соответствующие функции во всех процессах, но это ставит
под угрозу стабильность работы системы. А если в процесс устанавливают
оконный хук, дело еще хуже, т.к. процесс "сам" загружает нужную dll-ку, в
которой находится код перехватчика.

В ядре Windows есть функции-перехватчики, но даже они вызываются
пост-фактум, т.е. когда dll уже загружена.
1
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
30.05.2014, 09:56  [ТС] 7
Цитата Сообщение от Убежденный Посмотреть сообщение
В том-то и дело, что таких функций нет. Отследить, когда кто-то открывает
процесс с правами на запись, уничтожение или создание удаленных потоков,
вы не сможете. По крайней мере, из режима пользователя. Ну если только
не похукать соответствующие функции во всех процессах, но это ставит
под угрозу стабильность работы системы. А если в процесс устанавливают
оконный хук, дело еще хуже, т.к. процесс "сам" загружает нужную dll-ку, в
которой находится код перехватчика.
Ну а если запустить процесс через себя как нить?
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2014, 10:01 8
Цитата Сообщение от ivleb Посмотреть сообщение
Ну а если запустить процесс через себя как нить?
Без разницы.
Для всяких проактивных защит есть специальный API, доступный начиная с
Windows Vista SP1 и Windows Server 2008, называется ObRegisterCallbacks.
Вот там можно контролировать доступ к процессам и потокам. Но это ядро.
На более старых системах есть хуки системных вызовов, типа NtOpenProcess,
но это тоже ядро. В режиме пользователя никакой защиты от открытия
процессов нет, за исключением защиты на уровне DACL, т.е. списков контроля
доступа, когда, к примеру, процесс админа защищен от процессов пользователя.
4
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
30.05.2014, 10:08 9
Цитата Сообщение от ivleb Посмотреть сообщение
Должна защищаться не моя программа.. а стороняя.. т.е. моя программа "А" защищает программу "Б" от внедрений и изменений другими программами
Запускайте программу А, пусть она проверяет хеш сумму программы Б, а потом ее запускает. Программа А должна висеть в процессах и периодически проверять программу Б. Программа Б (защищаемая) не должна запускаться и работать, если программа А выключена. То есть в программу Б должны быть вставлены аналогичные проверки по таймеру.
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
30.05.2014, 10:22  [ТС] 10
Цитата Сообщение от Suppir Посмотреть сообщение
Запускайте программу А, пусть она проверяет хеш сумму программы Б, а потом ее запускает. Программа А должна висеть в процессах и периодически проверять программу Б. Программа Б (защищаемая) не должна запускаться и работать, если программа А выключена. То есть в программу Б должны быть вставлены аналогичные проверки по таймеру.
Вот а как это реализовать?
0
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
30.05.2014, 10:37 11
Именно как написано.

В программу Б (защищаемую) делаете проверки:
1) чтобы программа А лежала с ней в одной директории;
2) чтобы она была запущена;
3) чтобы ее размер или хешсумма совпадали с заданными.

Также делаете проверки по таймеру:
1) чтобы программа А была запущена;
2) чтобы она лежала в одной директории с программой Б.
3) чтобы ее размер или хешсумма совпадали с заданными.

Если программ А выключена, то программа Б завершает работу. Если программа А запущена, но ее хешсумма неправильная (взломали защитника), то удаляем ее или подменяем, или портим саму программу Б с просьбой обратиться к разработчику.

В программе А (пускач) делаете проверки:
1) чтобы программа Б лежала с ней в одной директории;
2) чтобы ее хешсумма совпадала с заданной.

Если программа Б взломана (хешсумма не совпадает), то программу Б удаляем или подменяем на файл "пустышку", который будет при любом запуске писать ошибки и советовать обратиться к разработчику.

После проверок через программу А запускаете программу Б.

Также в программе А периодически (по timer.tick) делаете проверки:
1) чтобы с программой Б (защищаемой) все было в порядке (лежит в одной директории, хешсумма совпадает);
2) если программа Б выключена, то программа А должна также завершить свою работу.

Процессы получаем через
C#
1
Process[] processes = Process.GetProcesses();
1
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
30.05.2014, 11:32  [ТС] 12
А пример можно?? Как эт будет выглядить я понял, а вот как реализовать...
0
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
30.05.2014, 11:55 13
ivleb,

1) чтобы программа А лежала с ней в одной директории с программой Б;
C#
1
if (File.Exists(Path.GetDirectoryName(Application.ExecutablePath + "/имя программы А")));
2) чтобы получать MD5 хеш с файла:
http://stackoverflow.com/quest... -text-file

3) чтобы найти программу в процессах:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Process[] processes = Process.GetProcesses();
 
bool programmIsOn = false;
 
foreach (Process process in processes)
{
      string ProcessName = process.ProcessName;
      if (ProcessName.Contains "название программы А") 
      {
          programmIsOn = true;
          break;
      }
}
 
//если программа выключена, то делаем то-то
if (programmIsOn == false){}
4) выполнение проверок по таймеру:
http://msdn.microsoft.com/ru-r... .110).aspx
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
30.05.2014, 13:31  [ТС] 14
Спасибо буду пробовать

Добавлено через 31 минуту
Цитата Сообщение от Suppir Посмотреть сообщение
3) чтобы найти программу в процессах:
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Process[] processes = Process.GetProcesses();
bool programmIsOn = false;
foreach (Process process in processes)
{
* * * string ProcessName = process.ProcessName;
* * * if (ProcessName.Contains "название программы А")
* * * {
* * * * * programmIsOn = true;
* * * * * break;
* * * }
}
//если программа выключена, то делаем то-то
if (programmIsOn == false){}
Выдает ошибку: Присвоение значений для "Contains" невозможно, так как он "группа методов"
0
26 / 26 / 11
Регистрация: 08.08.2011
Сообщений: 1,172
30.05.2014, 14:19 15
в скобки возьмите:

C#
1
 if (ProcessName.Contains("название программы А"))
Добавлено через 7 минут
Таймер лучше поставить на 5 - 10 секунд, чтобы программа каждую секунду в процессах не искала (будет тормозить).
0
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
30.05.2014, 14:53 16
Цитата Сообщение от Suppir Посмотреть сообщение
Запускайте программу А, пусть она проверяет хеш сумму программы Б, а потом ее запускает.
Suppir, топикстартер спрашивал о защите процесса, а не самого exe.
От, например, записи в память процесса или внедрения в него dll это
не поможет.
0
30.05.2014, 14:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2014, 14:53
Помогаю со студенческими работами здесь

Проекты внедрения ERP систем с открытым кодом - есть ли внедрения в России?
Добрый вечер. Интересует информация о внедрениях в России ERP-систем с открытым кодом, в идеале от...

Защита памяти процесса
Доброго времени суток, при написании защиты своего приложения через драйвер возникли небольшие...

Защита процесса от завершения
Подскажите где искать или как защитить процесс от его завершения через диспетчер задач(типа...

Защита процесса от убийства
Препод задал задачу: 7. Запустите процедуру в фоновом режиме, но предусмотрите её защиту от...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru