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

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

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

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

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

Ответов (3)

Решение

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

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

Монитор процессов от sysinternals тоже может помочь.

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

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

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

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