我试图窥探应用程序正在写入的日志文件.
我已成功将createfile与来自MSR的detours库挂钩,但似乎永远不会使用我感兴趣的文件调用createfile.我也试过用相同的结果挂钩openfile.
我不是一个经验丰富的windows/c ++程序员(甚至是一个经验丰富的程序员),所以我最初的两个想法是应用程序在挂钩api之前调用createfile,或者是否有其他api用于创建文件/获取它们的句柄.
编辑:感谢您的两个好评.我会upwote编码thewheel的回复,因为它是提供信息,但我没有足够的代表:(
你可以使用Sysinternal的FileMon.它是一个出色的监视器,可以准确地告诉您正在进行哪些与文件相关的系统调用以及参数是什么.
我认为这种方法比挂钩API调用更容易,而且不那么具有侵入性.
这是一个可能有用的链接:
使用C#和C++进行游击式文件监控
可以在不触及CreateFile API的情况下创建文件,但是我可以问一下你正在使用的DLL注入方法吗?如果你正在使用像Windows Hooks之类的东西,那么在目标应用程序初始化之后的某个时候你将不会安装你的DLL,你会错过早期的CreateFile调用.然而,如果您使用DetourCreateProcessWithDll之类的东西,则可以在运行任何应用程序启动代码之前安装CreateFile钩子.
根据我的经验,99.9%的创建/打开文件导致调用CreateFile,包括通过C和C++库,第三方库等打开的文件.也许有一些未记录的DDK函数不通过CreateFile进行路由,但是一个典型的日志文件,我对此表示怀疑.