Страница 1 из 2

Hook на CreateProcess

Добавлено: 27 дек 2007, 12:44
Duncon
Еще одну интересную темку создам..
Нужно в течении некотого промежутка закрывать все созданные процессы.
В принцыпе есть варриант сравнить все хандлы, но хочется именно перехватом сделать..

Re: Hook на CreateProcess

Добавлено: 27 дек 2007, 13:25
BBB
Не очень понятна идея.
Если нужно закрыть процесс(ы), хэндлы которых известны, то зачем вообще hook?

Re: Hook на CreateProcess

Добавлено: 27 дек 2007, 13:31
somewhere
Да нет, надо либо убивать вновь созданные, либо их вообще не создавать. Первый вариант не желателен, надо второй через хук. Вроде понятно все.

Re: Hook на CreateProcess

Добавлено: 27 дек 2007, 14:46
BBB
somewhere писал(а):Да нет, надо либо убивать вновь созданные, либо их вообще не создавать. Первый вариант не желателен, надо второй через хук. Вроде понятно все.
Пробежался по описанию SetWindowsHookEx, что-то не нашел возможности вешаться на запуск процесса. Или речь о каком-то другом хуке?

Re: Hook на CreateProcess

Добавлено: 27 дек 2007, 14:55
Duncon
Да все делпется через SetWindowsHookEx но с ней я не работал никогда, примеров на перехват клавы полно, но вот на процесс нигде нет..
Убивать вновь созданные может привести к ошибке приложения которое вызывает оное.. А вот закрыть его как раз то что надо..
Поиск окон ведется обычно через заголовок (текст) окна, а он в короткий промежуток может не успеть поменяться итд итп, сравнивать все Хандлы тож не гуд варриант (но в принцыпе рабочий, только сами понимаете отожрет процессорного времени в системе Хандлов около 200 присутствует в постоянном режиме, этож надо каждый раз сравнить)

Re: Hook на CreateProcess

Добавлено: 27 дек 2007, 16:01
BBB
Duncon писал(а):Да все делпется через SetWindowsHookEx но с ней я не работал никогда, примеров на перехват клавы полно, но вот на процесс нигде нет..
Я делал хук на запрет создания окон (идея: некое приложение в определенный момент выводит диалог с единственной кнопкой OK, а хотелось бы, чтобы это окно не выскакивало).
Просмотрел сейчас по MSDN (у меня, правда, старенький стоит - October 2001) описание SetWindowsHookEx - про перехват запуска процессов там ничего не нашел.

Re: Hook на CreateProcess

Добавлено: 27 дек 2007, 17:15
Duncon
Таки и не найдешь там ряд параметров кторорые изменяются в зависимости от предидущего, я так предполагаю это делается через WH_SHELL , и в функции обратного вызова все это расчленять, но инфы как токовой не найти, залудили весь инет...

Re: Hook на CreateProcess

Добавлено: 29 дек 2007, 21:12
Duncon
Up .

Re: Hook на CreateProcess

Добавлено: 30 дек 2007, 09:00
Vedrus
Через хуки процессы перехватывать нельзя. Самое простое, что можно сделать - использовать функцию CreateToolhelp32Snapshot и иже с ней (см. MSDN). Если же всё-таки надо именно перехватывать, то копай в сторону драйверов и руткитов.

ЗЫ. По поводу запрета создания окон. В системе в конкретный момент времени может быть зарегистрировано конечное число классов окна. Если зарегистрировать их в цикле в числе 100 000, то окна больше не будут создаваться, т.к. чтобы создаться нужно класс зарегистрировать. После этого только палец в Reset поможет.

окна

Добавлено: 30 дек 2007, 14:21
BBB
Vedrus писал(а):ЗЫ. По поводу запрета создания окон. В системе в конкретный момент времени может быть зарегистрировано конечное число классов окна. Если зарегистрировать их в цикле в числе 100 000, то окна больше не будут создаваться, т.к. чтобы создаться нужно класс зарегистрировать. После этого только палец в Reset поможет.
1. Запрет создания "нужных" окон, как я уже писал, как раз легко делается через хук.
2. А если (после этих 100 000 регистраций) пытаться создать окно уже зарегистрированного класса? :)