В настоящее время я работаю над инструментом в .NET / Python, который отслеживает определенные события в системе, такие как написание определенных разделов реестра или создание файлов со специальным именем.
Я оценил множество возможностей, и, поскольку мне не нужно заботиться о поддержке WinXP, я использую Event Tracing для Windows, чтобы получить в режиме реального времени поток всех операций с файлами и реестром, и это прекрасно работает (потребляя события из регистратора ядра NT).
Теперь я должен расширить свой инструмент для отслеживания всех вызовов некоторых функций Windows API, таких как WriteProcessMemory
, NtUnmapViewOfSection
или VirtualAllocEx
. Я нашел много инструментов, которые позволяют мне отслеживать все вызовы API из одного процесса, но перехватывать все процессы не очень хорошая идея, правда?
Теперь мне интересно, есть ли возможность использовать ETW для этого. Есть ли какой-либо поставщик, предоставляемый ядром, который уведомляет меня о вызовах API? Если нет, что еще я могу сделать?
Резюме: Если я хочу перехватывать вызовы API, нужно ли перехватывать каждый отдельный процесс?