Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2012, 08:10   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию Самозащита программы

Здравствуйте. Очень интересно узнать как работает самозащита программ, например таких как антивирусы. Когда эта самозащита включена, то невозможно удалить файлы программы, а так же ключи реестра, которые использует программа. Вот как этого можно добиться и что это вообще за зверь такой?
Заранее благодарен.
FaTaL вне форума Ответить с цитированием
Старый 16.04.2012, 09:08   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
невозможно удалить файлы программы
Любой исполняемый файл не удалить, пока он выполняется.
А также невозможно удалить любой файл, пока он открыт через CreateFile.
Пока программа выполняется, ей ни что не мешает проверять свою ветку реестра, и переписывать ключи заново, если там несанкционированные действия.
EUGY вне форума Ответить с цитированием
Старый 16.04.2012, 09:18   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Ну с исполняемым файлом то всё понятно. А вот ключи реестра она не перезаписывает, а просто не даёт их поменять. Выходит ошибка доступа.
Спасибо конечно за ответ, но вы думаете не в том направлении.
FaTaL вне форума Ответить с цитированием
Старый 16.04.2012, 09:19   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

антивирусы обычно имеют драйвер который контролирует все это.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.04.2012, 09:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если в своей проге открыть любые файлы, то их тоже не удалить. А если еще и монопольно, то их и не открыть сторонней программе. Понятно, что это только при работающей проге. По защите ключей реестра посмотрите статью от rpy3uHhttp://pblog.ru/?p=759
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.04.2012, 09:37   #6
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Это Вы спрашиваете не в том направлении. LPSECURITY_ATTRIBUTES
зы. Да и имхо можно просто держать открытым RegOpenKeyEx.

Последний раз редактировалось EUGY; 16.04.2012 в 09:45.
EUGY вне форума Ответить с цитированием
Старый 16.04.2012, 09:49   #7
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Почему же самозащиту можно отключить только с последующий перезагрузкой винды? Отсюда следует, что это не просто "ДЕРЖАТЬ ОТКРЫТЫМИ ФАЙЛЫ И КЛЮЧИ РЕЕСТРА". Здесь что-то другое. Вопрос что?
FaTaL вне форума Ответить с цитированием
Старый 16.04.2012, 09:51   #8
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
Почему же самозащиту можно отключить только с последующий перезагрузкой винды?
Да потому что процесс антивируса в работе.
Вот если бы вы спросили, как же, черт возьми, антивирусы делают так, что их процесс в диспетчере не удалить, тогда бы Вы думали в верном направлении.
EUGY вне форума Ответить с цитированием
Старый 16.04.2012, 10:43   #9
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

А причём тут "Антивирус запущен". Это не мешает ему закрыть (отпустить) ветку реестра. Для этого не нужно винду перезагружать. то же самое и с файлами.
FaTaL вне форума Ответить с цитированием
Старый 16.04.2012, 14:53   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Антивирусы просто перехватывают вызов функций винды, отвечающих за получение инфы о файле, ветке e.t.c.
Так же поступает знаменитая скрывалка файлов HideFolder
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание программы для управления некоторыми функциями другой программы Юрий1991 Общие вопросы Delphi 6 03.02.2012 15:32
запуск программы из под другой программы fomikadze Общие вопросы C/C++ 8 13.06.2011 14:47
Какие программы нужно установить чтобы писать программы для телефонов nokia Кристинка89 Общие вопросы по Java, Java SE, Kotlin 2 17.02.2011 15:15
Узнать название exe файла программы из самой программы Crystallon Общие вопросы Delphi 9 09.09.2010 16:22