Перехват Microsoft Detours WriteFileC++

Программы на C++. Форум разработчиков
Anonymous
Перехват Microsoft Detours WriteFile

Сообщение Anonymous »

Когда я подключаю WriteFile через Microsoft Detours, это работает:

Код: Выделить всё

  DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)Real_WriteFile, Hooked_WriteFile);
DetourTransactionCommit();
Однако, когда я смотрю на вывод в Debugview, интересны две вещи:
  • Вызовы Блокнота WriteFile очень часто, потому что каждый раз, когда я печатаю символ, он вызывает WriteFile, в то время как я ожидал, что он вызовет функции, отличные от WriteFile, для вывода символов на экран. Это нормальное поведение? Потому что, когда я проверяю аргументы вызова WriteFile, данные на диск не записываются.
  • Но что более важно, с помощью Detours я подключил WriteFile, но предположительно она также перехватывает NtWriteFile, что немного странно, поскольку WriteFile — это функция, которая вызывает NtWriteFile, а не наоборот. Когда я запускаю notepad.exe в мониторе API, похоже, что notepad.exe в некоторых случаях напрямую вызывает NtWriteFile, но по какой-то причине мой объезд также, кажется, перехватывает эти вызовы, в то время как я перехватываю только WriteFile. Может ли кто-нибудь объяснить такое поведение? Например, почему Detours также перехватывает NtWriteFile, хотя я явно указал перехват WriteFile?
Изображение


Подробнее здесь: https://stackoverflow.com/questions/778 ... -writefile

Вернуться в «C++»