![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перехват запуска приложения [D7, Win2k, WinXP]
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 апплеты, ты считаешь за приложения ?
Давай лучше согласимся, что ты немного фигней страдаешь. Информацию на второстепенных форумах начерпал, и думаешь, что программу напишешь за каникулы ? Такой софт можно годами писать.