Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват запуска приложения [D7, Win2k, WinXP]


Страницы:   1 2

dreamse ©   (2008-06-24 11:37:00) 

Приветствую.

Занимаюсь разработкой приложения для безопасности.
Не буду вдаваться в подробности. Смысл следующий: Нужно каким либо образом перехватывать запуск приложений.

Хотел бы чтобы вы подсказали как будет лучше всего это реализовать, я опишу те варианты которые пришли мне на ум и опишу почему они не подходят.

Есть следующие варианты:

1) Прописать в реестре %1 чтобы любое приложение запущенное в Windows запускалось через мою программу, т.е запускаеться моя программа с параметрами я её проверяю и уже затем запускаю.
Соответственно этот способ считать лучшим не следует так как его очень просто обойти.

2) Каждые N секунд по таймеру обновлять список процессов, смотреть если добавился процесс, проверять его и если он должен быть заблокированн то отпралять ему Terminate Process
Минусы: Данный вариант постоянно нагружает процессор на 5-10 % каждые N проверяемых секунд и к тому же пока идет проверка проверяемое приложение может уже сделать все что нужно (например удалить файлы с диска) и смысл в его проверке просто будет утерян

3) Внедрение DLL во все процессы системы
Внедряю DLL которая отслеживает любую попытку запустить что либо (CreateProcess и пр.) и прежде чем произойдет запуск проверяет запускаемое приложение. Вариант идеальный если бы не следующие минусы: Внедренее DLL уже само по себе не законно и все антивирусы с проективной защитой сразу же пишут что происходит подозрительное действие, так же данный метод очень сильно глючит в висте (почему, пока не разбирался) к тому же думаю что это не совсем верное решение.

4) Лучшим решением будет: Написание драйвера
Драйвер перехватывает любой запуск и передает например путь в мой сервис, сервис проверяет приложение и если это не то приложение которое нужно блокировать то отправляет данные драйверу о том что приложение можно разрешить запускать.
Минусы: Я не знаю не C++ ни ASM а писать драйверы на Delphi к сожалению нельзя (знаю что компилятор 2 и 3 Delphi позволяет, но давайте уж согласимся что это полное изврещение и нормальный sys не написать :(   )

Подскажите какие могут быть оптимальные решения которые можно было бы реализовать с наименьшей загрузкой CPU и с наиболее большой вероятностью перехвата всех запускаемых приложений ( именно перхвата )


dreamse   (2008-06-24 13:37:00) [21]

Пока откопал только что нужно копать в сторону

ZwCreateProcess и PsSetCreateProcessNotifyRoutine

Информации как обычно мало :( Может кто видел уже решение ?


dreamse   (2008-06-24 12:08:00) [22]

> tesseract ©   (24.06.08 11:57) [3]

> А свой эксплорер написать ?

Уже написан и проводник и аналог IE и куча всего другого.

Но тут вопрос не стоит так что нужно или не нужно ... тут вопрос : НАДО! по этому и пишу. И прошу мне в этом помочь а не рассуждать делать ли мне это или нет.


tesseract   (2008-06-24 11:57:00) [23]


> Перехват API функций Windows на создание процесса.


А свой эксплорер написать ? В принципе всё административно решаеться, без допсофта.


dreamse   (2008-06-24 11:55:00) [24]

> tesseract ©   (24.06.08 11:46) [1]

> А COM-сервера / java апплеты, ты считаешь за приложения ?

Надо бы но пока не считаю, пока основа это *.com и *.exe

> Давай лучше согласимся, что ты немного фигней страдаешь. Информацию на второстепенных форумах начерпал, и думаешь, что программу напишешь за каникулы ?  Такой софт можно годами писать.

3 вариант который я привел уже реализован, и работает прекрастно на XP вот с вистой проблемы и я решил переделать для более стабильной работы.

p.s на счет каникул ты слегка загнул :) на 3 года ты всего старше.
p.p.s что же касаеться тымы : фигня - не фигня ... то есть такое понятие как : Начальство сказало НАДО вот и пишу :)

еще 5 вариант. Перехват API функций Windows на создание процесса.
Пока его прорабатываю, но к сожалению информации мало


tesseract   (2008-06-24 11:46:00) [25]


> Минусы: Я не знаю не C++ ни ASM а писать драйверы на Delphi
> к сожалению нельзя (знаю что компилятор 2 и 3 Delphi позволяет,
>  но давайте уж согласимся что это полное изврещение и нормальный
> sys не написать :(   )


Можно. Про D2/3 - это явный прогон, да и  sys-драйвер тебе тут абсолютно не нужен.

Например, определсиь, как драйвер будет определять запуск приложения?  Драйвера от честнейших ATI/NVIDIA заточки, вроде как в сервисе определяют. И потом уже говорят драйверу, что и как врубать.


> наиболее большой вероятностью перехвата всех запускаемых
> приложений ( именно перхвата )


А COM-сервера / java апплеты, ты считаешь за приложения ?

Давай лучше согласимся, что ты немного фигней страдаешь. Информацию на второстепенных форумах начерпал, и думаешь, что программу напишешь за каникулы ?  Такой софт можно годами писать.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо