![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Вообщем ситуация такая, у меня есть Процесс , нужно отловить любые попытки обращения\вторжения к\в его памяти
Это сообщение отредактировал(а) DominiK - 3.5.2008, 15:46 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Что ты имеешь ввиду под обращением?
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) DominiK - 3.5.2008, 15:47 |
|||
|
||||
| dizzy1984 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: нет Всего: 25 |
Сформулируй список действий, которые могут привести к тому, что твоя программа станет работать не так, как тебе хочется.
Ты имеешь в виду запретить писать в область памяти уже запущенного процесса? Это, вроде бы, и так невозможно. |
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Действительно, невозможно.
Дело в том, что windows использует функции для записи в память процесса для совершения своих "внутренних" операций. Например, при COM-маршалинге, маршалинге сообщений и некоторых других случаях. Поэтому запретить изменять память процесса нельзя - это приведет к его неработоспособности. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
WriteProcessMemory, ы? перехват api, которые могут тебе помешать - Read/WriteProcessMemory,CreateRemoteThread,etc... edit: ой, прочитал то я криво про "невозможность"... подразумевалась "невозможность запрета записи", а я прочитал как "невозможность записи". пардон. и, тем не менее, это вполне возможно - просто смотреть, кто именно пытается изменить память. Это сообщение отредактировал(а) dumb - 19.4.2007, 15:40 |
|||
|
||||
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
Вообще убивать другой процесс который пытается как то повлиять - это неэтично. Куда правильнее завршиться самому.
На любой ход в принципе можно построить патч. Твой процесс под отладчиком бессилен что либо сделать. Антиотладочные коды против дебаггеров так или иначе обходиться.
Крис Касперски. Неявный самоконтроль как средство создания не ломаемых защит. Это сообщение отредактировал(а) -Kp0T- - 19.4.2007, 10:17 |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Вы видели в некоторых фаирволах, или антивирусах...не помню точно, когда программа пытается вломиться в другой процесс, то идет оповещение пользователя. о разрешении. Вот надо чтото подобное зделать, только не спрашивать! А Грохать сразу.
|
|||
|
||||
| Tectoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 202 Регистрация: 13.3.2007 Репутация: 7 Всего: 8 |
Это сообщение отредактировал(а) Tectoder - 19.4.2007, 14:38 |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
Tectoder
dumb Оставте свои номера ICQ |
|||
|
||||
| AndreyK |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Можно (если защищать собственную программу):
Во всех процессах расставить что-то типа SetEvent и собирать сигналы в другом ,секретном, процессе, запоминая время и порядок их срабатывания. Если какой-то процесс под отладчиком, то между сигналами обнаружится пауза во много десятков секунд ... Или ,наоборот, везде расставить WaitForMultipleObjects и если на него вовремя не поступит сигнал, то процесс зависает навсегда, а сигнал не поступит, если процесс ,из которого должен был поступить сигнал, под отладчиком... В общем если подумать, то можно всё так запутать, что дебагер сразу подвесит программу... Если это чужая программа - то ,наверное, можно перехватить какие нибудь обращения к API и опять-же обнаруживать вмешательство по прекращению жизнедеятельности... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Цитата из уважаемого Касперски основана на том, что ассемлерный листинг программы чист и ясен хакеру как слеза. Если логика программы (хотя бы защиты) полностью восстановлена, то тут действительно ничего не поделаешь: обход скорее всего найдется. При неограниченном времени и неограниченном терпении, разобрать можно любой код. Остается всячески этому мешать (чтобы либо время, либо терпение кончились).
Тема как-то уходит к вопросам защиты вообще... -------------------- ... |
|||
|
||||
| -Kp0T- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 23.2.2007 Репутация: 2 Всего: 2 |
Вышеприведенная цитата Криса Касперского упомянута не случайно. Метод, расписанный Крисом, по-моему, являтся корректным решением проблемы самоконтроля.
Доминик, почитай на досуге. Надеюсь, в статье ты найдешь ответ на свой вопрос. |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Я же уже тебе сказал, что это всё основано на перехвате API. Антивирусы и фаерволы вешают свои драйвера в память, те устаналивают перехват на функции и мониторят параметры. Иначе ты эту проблему никак не решишь, только перехват! В юзермоде тебе достаточно поставить хуки на следующие функции: OpenProcess(ZwOpenProcess) DuplicateHandle(ZwDuplicateObject) WriteProcessMemory(ZwWriteVirtualMemory) ReadProcessMemory(ZwReadVirtualMemory) Без использования этих функций к твоему процессу, стандартными средствами, обратиться будет невозможно. Добавлено через 1 минуту и 22 секунды Судя по твоим вопросам тебе не хватит знаний реализовать защиту, я уж не говорю о хорошей защите. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| DominiK |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 77 Регистрация: 11.3.2007 Где: Россия, Омск Репутация: нет Всего: нет |
del
Это сообщение отредактировал(а) DominiK - 3.5.2008, 15:51 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |