Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Перехват собития запуска процесса


Автор: Goganchic 22.8.2008, 14:51
Всем привет! Я пишy драйвер, который должен следить за всеми запускаемыми процессами, логировать запуск каждого процесса и некоторым процессам "отказывать в запуске". Как я понимаю, в kernelspace-е можно повесить хук на запуск процессов. Итак, вопросы:
1. Возможно ли отказать процессу в запуске?
2. Как повесить хук в драйвере на запуск процесса?
3. Какой хук надо вешать? smile
Заранее спасибо за ответы

Автор: ama_kid 22.8.2008, 23:53
Порядок вызова функций при создании процесса:
Цитата
ZwCreateProcess
RtlCreateProcessPrameters
RtlCreateUserProcess
NtResumeThread
Можно перехватывать функцию ZwCreateProcess, как-нибудь обработать результат (либо выцепить имя, либо по PID) и убить его, если совпадает с условиями. Примерно так (псевдокод): 
Код
Перехваченный_ZwCreateProcess(PHANDLE handle) {
    original_ZwCreateProcess(handle);
    Имя_файла, размер_образа, и т.д. получаются по хендлу.
    Если запретить создание {
        ZwTerminateProcess(handle);
        return STATUS_ACCESS_VIOLATION;
    }
}

Но есть вариант поэлегантней - http://msdn.microsoft.com/en-us/library/ms802952.aspx...

Автор: Goganchic 26.8.2008, 11:07
ama_kid, пасиб огромное, все заработало smile

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