Нужно перехватить CreateFile и CreateProcess во всех процессах в системе. Проблема в том, что на машинах установлено специализированное защитное ПО, блокирующее все попытки сделать это на уровне пользователя: блокируются CreateRemoteThread и WriteProcessMemory. Хочу написать драйвер уровня ядра, который будет загружаться при старте операционной системы и перехватывать NtCreateSection для выявления запуска процессов. При обнаружении запуска процесса, драйвер должен будет загрузить в него мою dll, и пропатчить образ kernel32.dll в памяти процесса, внедрив в начало CreateFile и CreateProcess переходы на код внутри моей dll. Вопрос в том, реализуемо ли это? Не будет ли проблем со страничной переадресацией при доступом из драйвера ядра к памяти пользовательского процесса? Самое интересное, антивирусам это специализированное защитное ПО не мешает. Как задача глобального хука api обычно решается в антивирусах?
Если разработка небольшой конторы не мешает устанавливать перехваты regular антивирусам, то в чем дело-то ? Видать не очень-то и специфическая штука... Пробуем - BSODим - жалуемся (предоставляя analyze -v )
З.Ы. А если еще и предоставите эту штуку (хотя-бы драйвер) то найдутся, я думаю те, кто скажет Большое Спасибо
Нужна сложная обработка и тащить ее на уровень ядра очень не хочется. Или есть способ временно передать управление из перехватчика в ядре на уровень пользователя в тот же поток?
Ну-ну. Лезем в ring0, чистим ssdt, возвращаемся в ring3 и хучим в всех процессах нужные функции, путем внедрения dll. Ну не ересь ли? TC: Если по условию задачи допустимо использование драйвера, то почему бы не перехватить нужные тебе функции прямо в ядре? Ты говоришь, что логика сложна и закладывать ее в драйвер "опасно". Ну что же, есть море способов из драйвера передать управление/дать команду на выполнение коду в ring3. В тот же поток тебе не нужно, ибо код драйвера будет исполняться не в контексте твоего приложения. Ты можешь использовать events для того, чтоб уведомить свой юзермодный код о том, что пора поработать. Читай статьи Four-F.