Перехватить доступ к процессу с помощью драйвера Windows MiniFilter - PullRequest
0 голосов
/ 16 октября 2019

Я занимаюсь разработкой приложения безопасности, которое должно отслеживать активность любого процесса.

Мне удалось перехватить доступ к файлу, установив драйвер MiniFilter, благодаря образцу MiniFilter, предоставленному Microsoft на GitHub .

Однако я не нашел никакой документации о том, как перехватить процесс создание / завершение с помощью минифильтра.

Я бы хотел перехватить создание нового процесса с помощьюлюбой родительский процесс (который может использовать такие функции, как CreateProcess, ShellExecute и т. д.).

Я также хотел бы перехватывать сигналы завершения процесса (отправляемые такими API-интерфейсами, как TerminateProcess ), чтобы избежать процесса моей программы безопасностибыть убитым потенциальным вредоносным ПО.

В данный момент я настраиваю функцию обратного вызова в своем драйвере минифильтра, которая успешно перехватывает операции ввода-вывода файлов, как указано в примере Microsoft:

FLT_POSTOP_CALLBACK_STATUS ScannerPostCreate (
    _Inout_ PFLT_CALLBACK_DATA CallbackData,
    _In_ PCFLT_RELATED_OBJECTS FltObjects,
    _In_opt_ PVOID CompletionContext,
    _In_ FLT_POST_OPERATION_FLAGS Flags
    )

У меня вопрос, могу ли я использоватьта же функция обратного вызова для перехвата доступа к процессу? Или мне нужно настроить другую функцию обратного вызова или использовать совершенно другой метод?

1 Ответ

2 голосов
/ 19 октября 2019

Поскольку минифильтр является модулем ядра, вы можете использовать любую подпрограмму, экспортируемую ядром / HAL или другими модулями ядра. Например, PsSetCreateProcessNotifyRoutine.

...