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

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

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

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

Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2014, 22:44
Ответы с готовыми решениями:

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

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

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

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

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

В программу Б (защищаемую) делаете проверки:
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  [ТС]
А пример можно?? Как эт будет выглядить я понял, а вот как реализовать...
0
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
30.05.2014, 11:55
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  [ТС]
Спасибо буду пробовать

Добавлено через 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
28 / 28 / 11
Регистрация: 08.08.2011
Сообщений: 1,173
30.05.2014, 14:19
в скобки возьмите:

C#
1
 if (ProcessName.Contains("название программы А"))
Добавлено через 7 минут
Таймер лучше поставить на 5 - 10 секунд, чтобы программа каждую секунду в процессах не искала (будет тормозить).
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
30.05.2014, 14:53
Цитата Сообщение от Suppir Посмотреть сообщение
Запускайте программу А, пусть она проверяет хеш сумму программы Б, а потом ее запускает.
Suppir, топикстартер спрашивал о защите процесса, а не самого exe.
От, например, записи в память процесса или внедрения в него dll это
не поможет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2014, 14:53
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru