![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Можно ли это сделать, чтобы пресечь запуск этого приложения, например, запросить пароль и т.д.?
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Riddik
Средствами виндоуз, установить права доступа, к примеру дать доступ для запуска приложения только одному пользователю и убрать со всех остальных. Если нужно просто перехватить запуск - тогда вопрос как будет идти идентификация процесса? т.е. каким образом вы поймете что это именно тот процесс который нужен? file name, path? файл можно переименовать или переместить. Вообще задача немного непонятная. Добавлено через 4 минуты и 24 секунды Еще варианты - плоды больного воображения 1. Перехватить CreateProcess 2. Подключать DLL ко всем запускаемым процессам (через регистры или другими методами) и проверять при запуске 3. Зашифровать файл и позволять запуск только через свое приложение (которое расшифрует перед запуском) вариантов много, и у каждого свои проблемы |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
file name или path не будут изменены. Пользователь один - он же админ. Иногда имеет доступ к компу другие люди, нужно просто не разрешать иногда им запускать один exeшник.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Если эти пользователи сидят по администратором - то в идеале никак нельзя. Все что вы сделаете - администратор может с легкостью убрать А так, самый легкий способ это подключать ДЛЛ ко всем стартующим приложениям и проверять GetModuleFileName. Если наша программа, остаемся висеть, если нет - отгружаемся. Путь к длл записать в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs Есть исключения, ДЛЛ не подключается к тем программам, которые не подгружают user32.dll (таких приложений очень мало). Проблема: Пользователь может удалить из регистров этот путь и тогда он все прекрасно запустит. Решение есть, но они все извращенные и как ни странно тоже не идеальные. Это сообщение отредактировал(а) azesmcar - 4.5.2009, 10:42 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
проще всего - заразить этот .ехе своим кодом
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Riddik
а шифровка программы не подходит? Добавлено через 55 секунд
конечно, проще простого. Только надо обойти антивирусы. |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
GoldFinch, как можно заразить своим кодом, интересно?
azesmcar, скорее всего не подойдёт. В принципе, в этом случае можно не волноваться что администратор или другие пользователи иогут удалить из регистров этот путь и т.д. Вот надо попробовать заразить exe своим кодом, как это делается? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
||||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
azesmcar, нет, к сожалению. Значит, только ассемблером?
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
exe файл это бинарный код, вставить в него что либо можно только на ассемблере либо напрямую нулями и единицами Это сообщение отредактировал(а) azesmcar - 4.5.2009, 11:46 |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
Я тут подумал, может дезассемблить этот файл, чуть изменить, а потом опять..
|
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
"заразить" наверное не совсем верный термин, правильнее наверное "расширить функциональность" программы
для этого есть несколько подходов наиболее простой - написать длл на ЯВУ типа С++ и добавить эту длл в импорты самого .ехе или длл которые этот .ехе использует (не системных конечно). антивирусы на такое "заражение" внимания не обращают другой подход - это написать на асме код (например вызов LoadLibraryA для загрузки своей длл), записать его в свободное место .ехе и перенаправить туда точку входа .exe (или все то же самое для одной из длл) этот способ может непонравиться некоторым антивирусам, что впрочем необязательно, зато может скрыть факт загрузки своей длл и ее имя |
|||
|
||||
| Riddik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 2.12.2006 Репутация: нет Всего: нет |
GoldFinch, спасибо.
|
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
- Написать свой пакер при запуске запрашуеш пароль, если нормально разпаковываеш, загрущаеш exe.
- Устанопить хук на создание процесса(антивирусники могут ругатся) --------------------
google.com и это все. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
можно установить свое приложение отладчиком для другого, это прописывается где-то в реестре Добавлено через 1 минуту и 11 секунд и все это может приводить к нестабильной работе системы |
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
Вот так стабильность......... --------------------
google.com и это все. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 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 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
интересно как например загрузка длл может привести к нестабильной работе системы? чтото в любом приложении используются длл, и почему-то система работает, как же так? а как патч может привести к нестабильной работе? кстати о какой системе речь? об операционной? так процесс впринципе не может ей навредить, если не будет некоторые апи вызывать |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
он может испортить приложение, ну а способов, которыми приложение может навредить системе(операционной) и данным пользователя - масса к примеру, оно может просто использовать много памяти, что приведет к тормозам в любом случае это хак, поэтому работать он не обязан, наиболее правильный вариант - перехватить CreateProcess Добавлено через 7 минут и 44 секунды и кстати, как ты применишь свой патч к приложению, если оно на readonly носителе? Добавлено через 8 минут и 10 секунд и как ты его предлагаешь искать? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 5 Всего: 211 |
Ты еще забыл сказать про обновления приложения После каждого обновления его придется хакать снова
Не думаю что это самый правильный вариант (несмотря на то что я его предлагал)..но все же вариант. Правильным было бы на мой взгляд шифровать экзешник и запускать через себя, либо твой вариант с дебагером. Это сообщение отредактировал(а) azesmcar - 7.5.2009, 13:10 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
Lazin, твой самописный дебагер куда как быстрее свалит систему, это несопоставимые задачи - написать длл с необходимым кодом, или написать дебаггер с необходимым кодом
кстати, Image File Execution Options добавить подключ, имя которого совпадает с именем exe-файла приложения если приложение называется launch.exe ты их все дебажить будешь? перехват CreateProcess - как минимум не соответствует задаче - надо работать с конкретным приложением, а не со всеми подряд, твой перехватчик будет висеть загруженным в системе все время, жрать память и жрать время у каждого приложения в системе? вот это как раз и приведет к тормозам, когда при каждом запуске процесса будет либо работать твой перехватчик, либо проверяться лишний ключ реестра я же предложил способ который затронет только нужное приложение, будет жрать память не больше чем жрет памяти длл (2-3 страницы) и тратить время только нужного приложения ,при его запуске Добавлено через 3 минуты и 29 секунд azesmcar, добавление длл в импорты - процесс автоматический, есть готовые утилиты (lordpe, petools), можно самому написать код, причем код установки можно разместить в самой длл добавление своего кода в PE также процесс не требующий вмешательства человека, те же вирусы успешно с этим справляются практически для любого PE |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
приложение не должно быть каким-то особенным, можно хоть notepad.exe использовать вместо отладчика в принципе, вариант с добавлением dll, то-же прокатит, но что проще сделать, написать dll, которая-бы запрашивала пароль и в случае, если он не подойдет, убивала-бы процесс или что-то в этом роде и добавить ее в список импорта, или написать приложение, которое запрашивало-бы пароль и потом запускало-бы приложение, путь к которому был передан через параметр командной строки? причем, в первом случае нужно бороться с обновлениями программы(если они есть) |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
||||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
-------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Pori |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 (не знаю как прикрутить в борланде, а разработка идет в нем) |
|||
|
||||
| DrHex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 2.5.2009 Репутация: нет Всего: нет |
В том то и дело что очень легко защита обходится. На распаковщики антивирусники некричат. Pori а вот свою тему создать слабо? --------------------
google.com и это все. |
|||
|
||||
| Pori |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 10.9.2007 Репутация: нет Всего: 1 |
не хотел плодить кучу однотипных тем, но раз общественность просит, то вот:
http://forum.vingrad.ru/forum/act-ST/f-100...2/unread-1.html Там уже более конкретно по коду |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 8 Всего: 154 |
перечитай тему, никто ничего обходить не будет |
|||
|
||||
| bra1ny |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 26.12.2008 Репутация: 2 Всего: 3 |
Может стоит попробовать сделать с PsSetCreateProcessNotifyRoutine() ?
--------------------
Что вас манит сюдаИз заморзких широт?Там гораздо сытней и красивей.Или воля не та, или воздух не тот -Знать и вам не прожить без России. |
|||
|
||||
| REZiaMIX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 346 Регистрация: 3.11.2007 Репутация: нет Всего: 4 |
Для глобального перехвата я бы сделал драйвер с хуком CreateProcess.
Для перехвата юзермодных функций определенной программы(на примере IE) сделал бы так: Путем инъекции длл в explorer.exe(оттуда запускают пользователи IE) перехватываю CreateProcess. При создании любого процесса сверяем имя(можно хоть хеш содержимого, или с учетом размера) с подходящим по фильтру. Если подходит - внедряем туже длл, только с перехватом "нужных функций". Данный подход устраивал меня во многих ситуациях. Т.к. ИМХО Виста полное Г, там не проверял. Но по темам , например на масм.ру - эти способы и там работают. -------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |