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

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

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

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

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


person RedDeckWins    schedule 17.08.2008    source источник


Ответы (3)


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

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

person Barak Schiller    schedule 17.08.2008
comment
Filemon и родственное ему приложение Regmon — отличная штука - person Chris Ballance; 09.11.2008
comment
FileMon был заменен ProcMon (technet.microsoft.com/en-us/sysinternals /bb896645.aspx) - person Jason R. Coombs; 07.10.2009

Вот ссылка, может кому пригодится:

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

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

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

person Community    schedule 17.08.2008

Также может помочь Process Monitor от sysinternals.

person botismarius    schedule 05.09.2008