Я пытаюсь найти файл журнала, в который пишет приложение.
Я успешно подключил createfile к библиотеке обходных путей из MSR, но, похоже, createfile никогда не вызывается с файлом, на котором я заинтересован в отслеживании. Я также пытался подключить openfile с теми же результатами.
Я не являюсь опытным программистом Windows / C ++ (или даже опытным программистом), поэтому сначала я думал, что приложение вызывает createfile до того, как я перехватываю apis, или что есть какой-то другой api для создания файлов / получения дескрипторов для них. ,
Редактировать: Спасибо за два отличных ответа. Я бы поддержал кодирование ответа на колесо, так как оно было информативным, но мне не хватает представителя :(
Вы можете использовать FileMon от Sysinternal . Это отличный монитор, который может точно сказать, какие системные вызовы связаны с файлами и каковы параметры.
Я думаю, что этот подход намного проще, чем перехват вызовов API, и гораздо менее навязчив.
Вот ссылка, которая может быть полезна:
Мониторинг файлов в стиле партизан с использованием C # и C ++
Можно создать файл, не касаясь API CreateFile, но я могу спросить, какой метод внедрения DLL вы используете ? Если вы используете что-то вроде Windows Hooks, ваша DLL не будет установлена, пока не произойдет инициализация целевого приложения, и вы пропустите ранние вызовы CreateFile. Принимая во внимание, что если вы используете что-то вроде DetourCreateProcessWithDll, ваш хук CreateFile может быть установлен до запуска любого кода запуска приложения.
По моему опыту, 99,9% созданных / открытых файлов приводят к вызову CreateFile, включая файлы, открытые с помощью библиотек C и C ++, сторонних библиотек и т. Д. Возможно, есть некоторые недокументированные функции DDK, которые не маршрутизируют через CreateFile, но для типичный лог-файл, я в этом сомневаюсь.
Process Monitor от sysinternals тоже может помочь.