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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как перехватить запуск определённого приложения? 
:(
    Опции темы
DrHex
Дата 7.5.2009, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

можно установить свое приложение отладчиком для другого, это прописывается где-то в реестре


Вот так стабильность.........
--------------------
google.com и это все.
PM MAIL   Вверх
Lazin
Дата 7.5.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



а что смущает?
Если зарегистрировать свое приложение как отладчик для другого приложения, то просто будет запускаться ваше приложение, всегда когда пользователь будет пытаться запустить другое, это куда безопаснее, чем пытаться изменять это приложение. Антивирус не будет иметь ничего против.
Что-бы это сделать, нужно в ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options добавить  подключ, имя которого совпадает с именем exe-файла приложения. Затем, нужно создать в этом подключе строковый параметр Debugger и указать в нем полный путь к своему приложению.
Каждый раз когда пользователь будет запускать приложение(откуда угодно), будет запущен ваш "отладчик" который получит на вход путь к отлаживаемому приложению.

Добавлено через 3 минуты и 27 секунд
зы
ProcessExplorer из sysinternals так делает, что-бы заменить taskmanager
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 7.5.2009, 10:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



Цитата(Lazin @  7.5.2009,  06:39 Найти цитируемый пост)
и все это может приводить к нестабильной работе системы smile  

интересно как например загрузка длл может привести к нестабильной работе системы? чтото в любом приложении используются длл, и почему-то система работает, как же так?
а как патч может привести к нестабильной работе? 
кстати о какой системе речь? об операционной? так процесс впринципе не может ей навредить, если не будет некоторые апи вызывать
PM MAIL ICQ   Вверх
Lazin
Дата 7.5.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(GoldFinch @  7.5.2009,  10:41 Найти цитируемый пост)
а как патч может привести к нестабильной работе? 

он может испортить приложение, ну а способов, которыми приложение может навредить системе(операционной) и данным пользователя - масса smile 
к примеру, оно может просто использовать много памяти, что приведет к тормозам
в любом случае это хак, поэтому работать он не обязан, наиболее правильный вариант - перехватить CreateProcess

Добавлено через 7 минут и 44 секунды
и кстати, как ты применишь свой патч к приложению, если оно на readonly носителе? smile

Добавлено через 8 минут и 10 секунд
и как ты его предлагаешь искать?
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 7.5.2009, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(Lazin @  7.5.2009,  12:20 Найти цитируемый пост)
в любом случае это хак поэтому работать он не обязан

Ты еще забыл сказать про обновления приложения smile 
После каждого обновления его придется хакать снова

Цитата

наиболее правильный вариант - перехватить CreateProcess

Не думаю что это самый правильный вариант (несмотря на то что я его предлагал)..но все же вариант. Правильным было бы на мой взгляд шифровать экзешник и запускать через себя, либо твой вариант с дебагером.

Это сообщение отредактировал(а) azesmcar - 7.5.2009, 13:10
PM   Вверх
GoldFinch
Дата 7.5.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



Lazin, твой самописный дебагер куда как быстрее свалит систему, это несопоставимые задачи  - написать длл с необходимым кодом, или написать дебаггер с необходимым кодом

кстати, Image File Execution Options добавить  подключ, имя которого совпадает с именем exe-файла приложения
если приложение называется launch.exe ты их все дебажить будешь?

перехват CreateProcess - как минимум не соответствует задаче - надо работать с конкретным приложением, а не со всеми подряд, твой перехватчик будет висеть загруженным в системе все время, жрать память и жрать время у каждого приложения в системе? 
вот это как раз и приведет к тормозам, когда при каждом запуске процесса будет либо работать твой перехватчик, либо проверяться лишний ключ реестра

я же предложил способ который затронет только нужное приложение, будет жрать память не больше чем жрет памяти длл (2-3 страницы) и тратить время только нужного приложения ,при его запуске

Добавлено через 3 минуты и 29 секунд
azesmcar, добавление длл в импорты - процесс автоматический, есть готовые утилиты (lordpe, petools), можно самому написать код, причем код установки можно разместить в самой длл
добавление своего кода в PE также процесс не требующий вмешательства человека, те же вирусы успешно с этим справляются практически для любого PE
PM MAIL ICQ   Вверх
Lazin
Дата 7.5.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(GoldFinch @  7.5.2009,  13:16 Найти цитируемый пост)
твой самописный дебагер куда как быстрее свалит систему, это несопоставимые задачи  - написать длл с необходимым кодом, или написать дебаггер с необходимым кодом

приложение не должно быть каким-то особенным, можно хоть notepad.exe использовать вместо отладчика smile 

в принципе, вариант с добавлением dll, то-же прокатит, но что проще сделать, написать dll, которая-бы запрашивала пароль и в случае, если он не подойдет, убивала-бы процесс или что-то в этом роде и добавить ее в список импорта, или написать приложение, которое запрашивало-бы пароль и потом запускало-бы приложение, путь к которому был передан через параметр командной строки? smile 

причем, в первом случае нужно бороться с обновлениями программы(если они есть)
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 7.5.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

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



Цитата(Lazin @  7.5.2009,  15:25 Найти цитируемый пост)
убивала-бы процесс или что-то в этом роде

return 0; в DllMain
PM MAIL ICQ   Вверх
GremlinProg
Дата 7.5.2009, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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




 ! 
GremlinProg

последние сообщения, не относящиеся к вопросу и нарушающие правила форума были удалены
в итоге, остались следующие решения:
1. администрирование над ограничениями пользователя (azesmcar)
2. регистрация отладчика за приложением (Lazin)
3. добавление дополнительной библиотеки в таблицу импорта (GoldFinch)

GoldFinch и azesmcar получают устные предупреждения
свои мысли всегда можно донести до собеседника без лишней грубости (к тому же причин для такого поведения не было)



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Pori
Дата 7.5.2009, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



У меня похожий вопрос.

Мне нужно перехватывать открытие IE, а потом еще перехватывать некоторые события (

108 - изменение прогресса,
104 - закачка страницы завершена,
252 - NavigateComplete2

).

Знаю как это реализовать в теории. Нужна ваша помощь в более подробной реализации. Ну так вот:

- перехват создания окон

С помощью CoCreateInstance() создаем экземпляр компонента IShellWindows, далее, подключаем к нему обработчик извещений (DShellWindowsEvents), который как раз и получает события о создании окна. Обработчики подрубаются стандартным методом - поиск точки соединения через интерфейс IConnectionPoint и подключение к этой точке нашего компонента (класса) через функцию Advice().
Далее наш класс начинает принимать извещения через метод IDispatch::Invoke(). Параметры при этом никакие не передаются, но окна всегда добавляются в конец текущего листа IShellWindows, поэтому получив последний item из IShellWindows мы и получим только что созданное окно.

- перехват событий IE

Метод приема событий такой же как и у IShellWindows. Для этого у вновь созданного окна запрашиваем интерфейс IID_IWebBrowser2 и делаем InterfaceConnect(). В методе CWebBrowserEvents::Invoke() отлавливаем события: 108 - изменение прогресса, 104 - закачка страницы завершена, 252 - NavigateComplete2.


В теории, вроде, все просто, а вот на практике чего-то я запнулся. Помогите пожалуйста написать код на c++ без ATL (не знаю как прикрутить в борланде, а разработка идет в нем)
PM MAIL   Вверх
DrHex
Дата 7.5.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

а что смущает?
Если зарегистрировать свое приложение как отладчик для другого приложения, то просто будет запускаться ваше приложение, всегда когда пользователь будет пытаться запустить другое, это куда безопаснее, чем пытаться изменять это приложение. Антивирус не будет иметь ничего против.
Что-бы это сделать, нужно в ключ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options добавить  подключ, имя которого совпадает с именем exe-файла приложения. Затем, нужно создать в этом подключе строковый параметр Debugger и указать в нем полный путь к своему приложению.
Каждый раз когда пользователь будет запускать приложение(откуда угодно), будет запущен ваш "отладчик" который получит на вход путь к отлаживаемому приложению.

Добавлено через 3 минуты и 27 секунд
зы
ProcessExplorer из sysinternals так делает, что-бы заменить taskmanager 


В том то и дело что очень легко защита обходится.

На распаковщики антивирусники некричат.

Pori а вот свою тему создать слабо?

--------------------
google.com и это все.
PM MAIL   Вверх
Pori
Дата 7.5.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



не хотел плодить кучу однотипных тем, но раз общественность просит, то вот:

http://forum.vingrad.ru/forum/act-ST/f-100...2/unread-1.html

Там уже более конкретно по коду
PM MAIL   Вверх
Lazin
Дата 8.5.2009, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(DrHex @  7.5.2009,  22:34 Найти цитируемый пост)
В том то и дело что очень легко защита обходится.

перечитай тему, никто ничего обходить не будет
PM MAIL Skype GTalk   Вверх
bra1ny
Дата 9.5.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Может стоит попробовать сделать с PsSetCreateProcessNotifyRoutine() ?  
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России.
PM   Вверх
REZiaMIX
Дата 9.5.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для глобального перехвата я бы сделал драйвер с хуком CreateProcess.
Для перехвата юзермодных функций определенной программы(на примере IE) сделал бы так:
Путем инъекции длл в explorer.exe(оттуда запускают пользователи IE) перехватываю CreateProcess.
При создании любого процесса сверяем имя(можно хоть хеш содержимого, или с учетом размера) с подходящим по фильтру.
Если подходит - внедряем туже длл, только с перехватом "нужных функций".

Данный подход устраивал меня во многих ситуациях.
Т.к. ИМХО Виста полное Г, там не проверял. Но по темам , например на масм.ру - эти способы и там работают.


--------------------
user posted image
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.2029 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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