Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Защита процесса... Вопрос. 
:(
    Опции темы
DominiK
Дата 17.4.2007, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Вообщем ситуация такая, у меня есть Процесс , нужно отловить любые попытки обращения\вторжения к\в его памяти smile 
 smile 

Это сообщение отредактировал(а) DominiK - 3.5.2008, 15:46
PM MAIL   Вверх
W4FhLF
Дата 18.4.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Что ты имеешь ввиду под обращением? 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
DominiK
Дата 19.4.2007, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



del

Это сообщение отредактировал(а) DominiK - 3.5.2008, 15:47
PM MAIL   Вверх
dizzy1984
Дата 19.4.2007, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: нет
Всего: 25



Сформулируй список действий, которые могут привести к тому, что твоя программа станет работать не так, как тебе хочется.

Цитата(DominiK @  19.4.2007,  01:24 Найти цитируемый пост)
Нужно недопустить изменение этого процесса.

Ты имеешь в виду запретить писать в область памяти уже запущенного процесса?
Это, вроде бы, и так невозможно.
PM MAIL   Вверх
Tectoder
Дата 19.4.2007, 09:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 202
Регистрация: 13.3.2007

Репутация: 7
Всего: 8



Цитата(dizzy1984 @  19.4.2007,  08:35 Найти цитируемый пост)
Это, вроде бы, и так невозможно. 
Действительно, невозможно.
Дело в том, что windows использует функции для записи в память процесса для совершения своих "внутренних" операций.
Например, при COM-маршалинге, маршалинге сообщений и некоторых других случаях. Поэтому запретить изменять память процесса нельзя - это приведет к его неработоспособности.
PM   Вверх
dumb
Дата 19.4.2007, 10:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 27
Всего: 158



Цитата(dizzy1984 @  19.4.2007,  08:35 Найти цитируемый пост)
Это, вроде бы, и так невозможно.

WriteProcessMemory, ы?

Цитата(DominiK @  19.4.2007,  01:24 Найти цитируемый пост)
Любое вмешательство должно присекаться

перехват api, которые могут тебе помешать - Read/WriteProcessMemory,CreateRemoteThread,etc...

edit: ой, прочитал то я криво про "невозможность"... подразумевалась "невозможность запрета записи", а я прочитал как "невозможность записи". пардон. и, тем не менее, это вполне возможно - просто смотреть, кто именно пытается изменить память.

Это сообщение отредактировал(а) dumb - 19.4.2007, 15:40
PM MAIL   Вверх
-Kp0T-
Дата 19.4.2007, 10:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 23.2.2007

Репутация: 2
Всего: 2



 Вообще убивать другой процесс который пытается как то повлиять - это неэтично. Куда правильнее завршиться самому.
На любой ход в принципе можно построить патч.
Твой процесс под отладчиком бессилен что либо сделать. Антиотладочные коды против дебаггеров так или иначе обходиться.
Цитата

Наиболее сильный алгоритм защиты: использовать контрольную сумму критических участков защитного механизма для динамической расшифровки некоторых веток программы ломаются уже не за минуты, а за часы (в редчайших случаях – ни). Алгоритм взлома выглядит приблизительно так: а) подсмотрев контрольную сумму в оригинальной программе, хакер переписывает код функции CalculateCRC, заставляя ее всегда возвращать это значение, не выполняя реальной проверки;
б) если защита осуществляет подсчет контрольной суммы различных участков программы и/или разработчик использовал запутанный самомодифицирующийся код, трудно предсказуемым способом меняющий свою контрольную сумму, то ха
кер может изменить защиту так, чтобы она автоматически само, восстанавливалась после того, как все критические участки будут пройдены; в) отследив все вызовы CalculateCRC, хакер может просто снять динамическую шифровку, расшифровав ее вручную, после чего надобность в CalculateCRC пропадает. Стоит отметить, что независимо от способа своей реализации любой само контроль элементарно обнаруживается установкой точек останова на те участки защитного механизма, которые были изменены. Остальное – дело техники. Можно сколь угодно усложнять алгоритм подсчета контрольной суммы, – напичкивать его антиатладочными приемами, реализовать его на базе собственных виртуальных машин (то есть интерпретаторов), некоторые из которых, такие, например, как Стрелка Пирса, достаточно трудно проанализировать. Но… если такие меры и остановят взломщика, то ненадолго.

Крис Касперски. Неявный самоконтроль как средство создания не ломаемых защит.

Это сообщение отредактировал(а) -Kp0T- - 19.4.2007, 10:17
PM MAIL   Вверх
DominiK
Дата 19.4.2007, 14:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Вы видели в некоторых фаирволах, или антивирусах...не помню точно, когда программа пытается вломиться в другой процесс, то идет оповещение пользователя. о разрешении. Вот надо чтото подобное зделать, только не спрашивать! А Грохать сразу.
PM MAIL   Вверх
Tectoder
Дата 19.4.2007, 14:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 202
Регистрация: 13.3.2007

Репутация: 7
Всего: 8



Цитата(DominiK @  19.4.2007,  14:34 Найти цитируемый пост)
когда программа пытается вломиться в другой процесс, то идет оповещение пользователя
Ага, agnitum outpost к примеру. Но если пытаться писать порциями по 4 байта то и они ничего не спрашивают. Почему, я уже объяснил

Это сообщение отредактировал(а) Tectoder - 19.4.2007, 14:38
PM   Вверх
DominiK
Дата 19.4.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



Tectoder
dumb

Оставте свои номера ICQ
PM MAIL   Вверх
AndreyK
Дата 19.4.2007, 17:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 15.3.2007

Репутация: нет
Всего: нет



Можно (если защищать собственную программу):
Во всех процессах расставить что-то типа SetEvent и собирать сигналы в другом ,секретном, процессе, запоминая время и порядок их срабатывания.
Если какой-то процесс под отладчиком, то между сигналами обнаружится пауза во много десятков секунд
...
Или ,наоборот, везде расставить WaitForMultipleObjects и если на него вовремя не поступит сигнал, то процесс зависает навсегда, а сигнал не поступит, если процесс ,из которого должен был поступить сигнал, под отладчиком...
В общем если подумать, то можно всё так запутать, что дебагер сразу подвесит программу...

Если это чужая программа - то ,наверное, можно перехватить какие нибудь обращения к API и опять-же обнаруживать вмешательство по прекращению жизнедеятельности...



PM MAIL   Вверх
Earnest
Дата 19.4.2007, 19:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата из уважаемого Касперски основана на том, что ассемлерный листинг программы чист и ясен хакеру как слеза. Если логика программы (хотя бы защиты) полностью восстановлена, то тут действительно ничего не поделаешь: обход скорее всего найдется. При неограниченном времени и неограниченном терпении, разобрать можно любой код. Остается всячески этому мешать (чтобы либо время, либо терпение кончились). smile 

Тема как-то уходит к вопросам защиты вообще...


--------------------
...
PM   Вверх
-Kp0T-
Дата 20.4.2007, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 23.2.2007

Репутация: 2
Всего: 2



 Вышеприведенная цитата Криса Касперского упомянута не случайно. Метод, расписанный Крисом, по-моему, являтся корректным решением проблемы самоконтроля.
Доминик, почитай на досуге. Надеюсь, в статье ты найдешь ответ на свой вопрос.
PM MAIL   Вверх
W4FhLF
Дата 20.4.2007, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 12
Всего: 121



Цитата(DominiK @  19.4.2007,  14:34 Найти цитируемый пост)
Вы видели в некоторых фаирволах, или антивирусах...не помню точно, когда программа пытается вломиться в другой процесс, то идет оповещение пользователя. о разрешении. Вот надо чтото подобное зделать, только не спрашивать! А Грохать сразу.



Я же уже тебе сказал, что это всё основано на перехвате API. Антивирусы и фаерволы вешают свои драйвера в память, те устаналивают перехват на функции и мониторят параметры. Иначе ты эту проблему никак не решишь, только перехват! В юзермоде тебе достаточно поставить хуки на следующие функции:
OpenProcess(ZwOpenProcess)
DuplicateHandle(ZwDuplicateObject)
WriteProcessMemory(ZwWriteVirtualMemory)
ReadProcessMemory(ZwReadVirtualMemory)

Без использования этих функций к твоему процессу, стандартными средствами, обратиться будет невозможно.

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


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
DominiK
Дата 20.4.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 11.3.2007
Где: Россия, Омск

Репутация: нет
Всего: нет



del

Это сообщение отредактировал(а) DominiK - 3.5.2008, 15:51
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0745 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.