Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Отслеживание появления нового процесса


Автор: DoZENT 15.1.2007, 17:14
Внедрил библиотеку во все процессы системы, теперь отслеживаю появление новых процессов через перехват ZwCreateThread и ZwResumeThread. Все нормлально перехватывается, я получаю хэндл нового процесса, в который необходимо внедрить библиотеку. Но ведь когда я буду это делать, получается, что внедрять будет не мой процесс, а тот, который перехватил функцию (извиняюсь за каламбур smile )... Значит надо использовать сплайсинг (это вроде не надежно в многопоточных приложениях) smile 

Автор: W4FhLF 17.1.2007, 13:17
А сейчас ты не сплайсчинг используешь? И почему надо использовать его?

Автор: DoZENT 17.1.2007, 16:15
Цитата

А сейчас ты не сплайсчинг используешь? И почему надо использовать его?

Сейчас я использую библиотеку advApiHook, а в ней по-моему не сплайсинг используется. Чтобы было понятней: как делать inject библиотеки "не от лица" чужого приложения?

Автор: W4FhLF 17.1.2007, 18:27
В advApiHook сплайсинг. 
Инжект сам по себе подразумевает внедрение чего-то во что-то от лица чужого приложения. 

Автор: DoZENT 17.1.2007, 19:46
Цитата

Инжект сам по себе подразумевает внедрение чего-то во что-то от лица чужого приложения. 

Это почему? Я же могу и от лица своего приложения внедрить.  Когда я внедряю модуль от своего лица, касперский спрашивает разрешение на это дело. А если каждый процесс, в который я внедрил свою библиотеку начнет делать то же самое с каждым запущенным им приложением, то что начнется?? Касперский каждые 20 секунд орать будет  smile

Автор: W4FhLF 17.1.2007, 20:21
Я что-то не пойму. Зачем каждому процессу в каждый созданный процесс что-то там инжектить? Инжектить будет тот процесс в котором сработал перехват, т.е. от контекста которого запускают новый процесс. Непонятно, в чём вообще вопрос?

Автор: DoZENT 17.1.2007, 20:38
Цитата

Инжектить будет тот процесс в котором сработал перехват

Да. Теперь представь, что каждый процесс запустил по программе. При этом касперский НА КАЖДЫЙ ИНЖЕКТ (если запускающая программа не в списке исключений) будет спрашивать разрешение. Мой вопрос в том, как этого избежать. Возможно ли перехватывать создание новых процессов ИЗ МОЕГО ПРИЛОЖЕНИЯ. Т.е. без инжекта в другие процессы. Я так подозреваю что нет, поэтому спрашиваю какие пути еще есть smile (например подойдет ли использование хуков)

Автор: dumb 17.1.2007, 22:29
Цитата(DoZENT @  17.1.2007,  20:38 Найти цитируемый пост)
подойдет ли использование хуков

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

Автор: DoZENT 18.1.2007, 14:53
Цитата

хуки непосредственно создание процесса не отлавливают

Это понятно, но их установка ведь внедряет модуль во все процессы системы? И по-моему при этом касперский не ругается smile 

Автор: dumb 18.1.2007, 18:26
Цитата(DoZENT @  18.1.2007,  14:53 Найти цитируемый пост)
их установка ведь внедряет модуль во все процессы системы?

во все gui-процессы. где-то видел, что и csrss-процессы хукаются, но на практике такого не видел

Цитата(DoZENT @  18.1.2007,  14:53 Найти цитируемый пост)
И по-моему при этом касперский не ругается

если включен контроль компонентов, то выскажется. но контроль компонентов обычно выключен, либо народ не особо "втыкает", что там написано и жмет "ок"... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)