![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Привет. Нужно перехватит функции создания и запись в файл..
Вообщем с теорией знаком, но НЕ ФИГА не работает. Есть куча примеров (и даже Рихтер). Все с ошибками и все не работают. Может кто-то подсказать либо пример, либо выложить простенький примерик. Очень надо.. Уже второй день парюсь. Что б не писал. Инет кишма кишит примерами на делфи, а на С++ не рабочие либо не внятные отрывки. Спасибо -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Вижу желающих много, хорошо. Давайте подумаем вместе
Итак, создадим длл, которая будет ставить хуки на прцессы. Код ТУПО передрал с Делфятины, потомы возможны ошибки..
Вот в принципе и все. Осталось заставить заработать DllMain Для этого в своем экзешнике пишем
Вот и все, для начала,но у меня не работает. В коментариях к коду в либе я написал то место, где замираю Это сообщение отредактировал(а) Coocky - 6.3.2007, 13:38 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Хорошо, опять молчим. Ну что ж, я нашел перехват функций с помощью библиотеки detours ,позже выложу библиотеку и исходники, для тех, кто не смог скачать с сайта мелкософтных или кто скачал, но не смог скомпилировать.. Теперь другой вопрос-КАК МНЕ ВНЕДРИТЬ своюю длл в нужный ЧУЖОЙ процесс? Знаю, статей много, но у меня не работает. Ну уж я точно не попадаю на точку останова в DllMain при отладке свое dll.
А может и не долен попадать? Реально ли так отлаживать? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 12 Всего: 121 |
Значит с теорией не знаком Ну не на процессы, а в данном случае на функции MessageBoxA/MessageBoxW. Такая библиотека будет подгружена во все ОКОННЫЕ приложений, а так же будет подгружаться по все вновь созданные ОКОННЫЕ приложения.
Что тебе известно о чужом процессе? В любом случае для непорсдественно внедрения нужно знать PID, найти его по имени процесса труда не составляет(CreateToolhelp32Snapshot & TH32CS_SNAPPROCESS), далее всё стандартно. Создаём базонезависимый участок кода, который будет подгружать нашу dll, записываем этот код в чужой процесс и запускаем на удалённое выполнение. По каким-то конкретно моментам есть вопросы? Есть примеры на Delphi, но я так понял тебя они не устраивают, тогда я могу помочь с примерами на ассемблере, когда-то писал такое для своего снифера, надо? Этот процесс я отлаживал следующим образом: Загружал процесс-жертву в отладчик, стартовал её. После чего ставил прерывание на загрузку нового модуля(DLL), далее в своём процессе я нажимал кнопочку аля "внедрить DLL в чужой процесс(этим процессом естественно был процесс-жертва)" и в отладчике прерывался на события "New module is loaded", т.е. моя dll была загружена в адресное пространство процесса-жертвы, но DllMain ещё не выполнилась, т.о. после этого я просто ставил прерывание на DllMain и запускал процесс дальше на выполнение. После чего мог спокойно отлаживать процедуру установки хука. Отладить процедуру перехвата функции ещё проще. Нужно просто поставить прерывание на функцию, которую собираешься перехватить. Как известно на её начало ставится переходник в функцию перехвата, а значит прервавшись на начале функции мы спокойно переходим в функцию перехвата и отлаживаем её. Но это всё конечно требует определённых навыков и знаний. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| piritus |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 3.1.2007 Где: Сибирь Репутация: нет Всего: 3 |
одно из решений
код написан КК (Крисом Касперски) у него для MessageBox, но думаю, что можно переделать под свои нужды:
--------------------
|
|||
|
||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: нет Всего: 62 |
Да нет! ИМЕНО на ПРОЦЕЕСЫ. С помощью хуков мы заставим длл внедрится во все ПРОЦЕССЫ!! Я уже разобрался
Примере есть в инете, но там нет выравнивания структуры. Я тоже разобрался. Вообщем разобрался САМ... Вот рабочий код
Это сообщение отредактировал(а) Coocky - 12.3.2007, 16:14 -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 27 Всего: 158 |
произошла небольшая путаница со смысловой нагрузкой слова "хук"...
нет. чтобы убедиться, в DLL_PROCESS_ATTACH сделай вывод куда-либо(OutputDebugString/MessageBox/log-file) pid'ов(GetCurrentProcessId), например. |
|||
|
||||
![]()
|
| Правила форума "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. |