Есть какие-нибудь API Windows для получения дескрипторов файлов, кроме createfile и openfile?

StackOverflow https://stackoverflow.com/questions/13806

  •  08-06-2019
  •  | 
  •  

Вопрос

Я пытаюсь просмотреть файл журнала, в который записывается приложение.

Я успешно подключил createfile к библиотеке detours из MSR, но createfile, похоже, никогда не вызывается с файлом, который мне интересен для отслеживания.Я также попробовал подключить openfile с теми же результатами.

Я не являюсь опытным программистом на Windows / c ++ (или даже опытным программистом), поэтому мои первоначальные две мысли были либо о том, что приложение вызывает createfile до того, как я подключу API, либо о том, что существует какой-то другой API для создания файлов / получения дескрипторов для них.

Редактировать:Спасибо за два замечательных ответа.Я бы поддержал ответ codingthewheel, поскольку он был информативным, но у меня недостаточно репутации:(

Это было полезно?

Решение

Вы можете использовать Sysinternal's ФилеМон.Это отличный монитор, который может точно сказать вам, какие системные вызовы, связанные с файлами, выполняются и каковы параметры.

Я думаю, что такой подход намного проще, чем перехватывать вызовы API, и гораздо менее навязчив.

Другие советы

Вот ссылка, которая может быть полезна:

Мониторинг файлов в партизанском стиле с помощью C # и C ++

Можно создать файл, не касаясь CreateFile API, но могу ли я спросить какой метод внедрения DLL вы используете?Если вы используете что-то вроде Windows Hooks, ваша библиотека DLL не будет установлена до некоторого времени после инициализации целевого приложения, и вы пропустите ранние вызовы CreateFile.Принимая во внимание, что если вы используете что-то вроде DetourCreateProcessWithDll, ваш хук CreateFile может быть установлен до запуска любого кода запуска приложения.

По моему опыту, 99,9% созданных / открытых файлов приводят к вызову CreateFile, включая файлы, открытые через библиотеки C и C ++, сторонние библиотеки и т.д.Возможно, есть какие-то недокументированные функции DDK, которые не маршрутизируются через CreateFile, но для обычного файла журнала я сомневаюсь в этом.

Монитор процесса от sysinternals тоже могло бы помочь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top