![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
Какой тип хука надо ставить, что-бы перехватить создание процесса? И вообще, что надо ловить?
|
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
WH_CBT и ловить HCBT_CREATEWND
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
HCBT_CREATEWND отслеживает создания окон, а не процессов.
|
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Я тебе говрою что HCBT_CREATEWND - сам так отлавливал. Этот хук перехватывет получение окном сообщения WM_CREATE до его поступеления окну. Соответсвтенно, если отменить это сообщение, то главное окно и не будет создано. Именно для перехвата процессов, по моему, стандартных хуков не существует.
Это сообщение отредактировал(а) <Spawn> - 1.8.2004, 12:56 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
А ведь можно перехватить вызов API CreateProcess, только как это реализовать?
|
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Можно но для этого тебе нужно писать заглушку вызова функции CreateProcess -
делаешь ДЛЛ в которой описываешь твой прототип CreateProcess так же в этой длл-ке у тебя долен быть код, заменяющий адрес твоей функции-прототипа на реальный адрес функции CreateProcess в таблице импорта процесса. Причем нужно сделать так, чтобы эта ДЛЛ-ка загружалась в адресное пространство целевых процессов при их старте. Всю инфу можно найти на rsdn.ru, но там на C. -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
А на Delphi?
В FAQ есть пример, только я здесь ничего не догоняю (может кто пояснит?) :
Это сообщение отредактировал(а) Red Wind - 1.8.2004, 14:13 |
|||
|
||||
<Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 1 Всего: 64 |
Red Wind если ты не понимаешь этот код, то я полагаю, что тебе пока не стоит браться за убивание процессов
![]() -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Ну можно применить и более простой способ, отслеживать появление нового процесса в всписке процессов.
|
|||
|
||||
xZero |
|
|||
Unregistered |
Red Wind, в том примере, который ты привел, имхо, перехватывается MessageBoxA. И тем более только для блокнота....
Неужели тебе ничто не подсказывает что надо изменить, что бы ловился CreateProcess, а не MessageBox? |
|||
|
||||
Red Wind |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
Подсказывет, но это не работает. Вот ещё один пример, тоже не палит :
Добавлено @ 20:45
Если по таймеру, то не подходит. Но если нет, то можно попробовать (как?). |
||||
|
|||||
RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Прежде всего меня интересует вопрос, а чем тебе таймер не угодил?
Боишься что его Убьют или чисто из принципа? |
|||
|
||||
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
Из принципа.
|
|||
|
||||
Red Wind |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 25.6.2004 Где: Минск Репутация: нет Всего: 2 |
А ещё есть мысль про TDebugEvent. Пробую написать, только не выходит : WaitForDebugEvent возвращает ERROR_INVALID_HANDLE. Что я неправильно делаю?
Это сообщение отредактировал(а) Red Wind - 1.8.2004, 23:16 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |