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





Вот ссылка, которая может быть полезна:
Мониторинг файлов в партизанском стиле с помощью C# и C++
Можно создать файл, не касаясь API CreateFile, но могу ли я спросить какой метод внедрения DLL вы используете? Если вы используете что-то вроде Windows Hooks, ваша DLL не будет установлена до тех пор, пока не будет инициализировано целевое приложение, и вы пропустите ранние вызовы CreateFile. Если вы используете что-то вроде DetourCreateProcessWithDll, ваш обработчик CreateFile может быть установлен до запуска любого кода запуска приложения.
По моему опыту, 99,9% созданных / открытых файлов приводят к вызову CreateFile, включая файлы, открытые через библиотеки C и C++, сторонние библиотеки и т. д. Возможно, есть некоторые недокументированные функции DDK, которые не маршрутизируются через CreateFile, но для типичный файл журнала, я сомневаюсь.
Вы можете использовать Sysinternal FileMon. Это отличный монитор, который может точно сказать, какие системные вызовы, связанные с файлами, выполняются. сделано и какие параметры.
Я думаю, что этот подход намного проще, чем перехват вызовов API, и гораздо менее навязчив.
FileMon был заменен ProcMon (technet.microsoft.com/en-us/sysinternals/bb896645.aspx)
Монитор процесса от sysinternals тоже может помочь.
Filemon и его родственное приложение Regmon - отличные вещи