Если ты знаком с драйверами, то такой перехват сделать очень просто. Достаточно будет подменить адрес ядерной функции в глобальной таблице обработчиков на адрес твоей функции перехвата, вот и всё. Таким же методом можно перехватывать практически любую АПИ-функцию.
Можно, конечно, позаморачиваться с этим и в режиме юзера, но, как по мне, такой подход намного труднее. Потому как нужно будет получить доступ к адресному пространству другого процесса, пропарсить таблицу импорта dll, хучить нужную функцию в несколько этапов... Хотя, конечно, всё это на любителя.
Реальные рабочие примеры кода можно взять на wasm.ru Там есть три статьи про перехват апи-функций от одного автора (никнейма его не помню хоть убей). В каждой статье рассматривается один из метедов перехвата. Найти эти статьи в ихнем файловом архиве крайне легко, поверь мне