1

ユーザーがアクセスした (作成、開いた、読み取った) すべてのファイルを追跡し、これらのアクションをログに記録して、別のアプリケーション内でさらに処理する必要があります。これを達成するための可能な方法を(できるだけ簡単に)調査および検索し、次の解決策を思いつきました。

  1. kernel32.dll をフックし、CreateFileA、OpenFile などのファイル固有の機能をすべてインターセプトします。IAT を変更してラッパー関数を提供することを考えました。元の関数への呼び出しを引き続き転送しますが、どのファイルがいつアクセスされたかをアプリケーションに報告します。これは簡単に実現できるように思えますが、Windows 7 で問題なく動作するとは思えません。新しいセキュリティ制限により、インポート アドレス テーブルを変更することでフックの成功が妨げられているように思われるからです。多分誰かがもっとよく知っています:)

  2. ファイル システムのミニフィルターを作成し、コールバック関数がファイル アクセスについて報告するようにします。ミニフィルターを作成したことがないため、これが実行可能なアプローチであるかどうかはわかりません。ミニフィルターの開発には、はるかに多くの労力が必要だと思います。単純なファイルシステムのミニフィルターの作成に関するチュートリアルなどのリソースを誰かが指摘してくれるかもしれません。

私は Microsoft の Detour ライブラリを知っていますが、フックは一般的に非常に単純であるため、この段階では使用を避けたいと思います。Detours や EasyHook を使用せずに、Windows 7 でファイル機能をフックする信頼できる方法はありますか? ミニフィルターについて: たとえば、暗号化を扱うフィルターと比較して、実現したいことは非常に単純だと思います。しかし、私はミニフィルターを書いた経験がなく、目標を達成するのにどれだけの労力がかかるかを見積もることができません. 私が見つけたすべての例は、ミニフィルターではなく、ファイル システム フィルターを扱っています。

ヒントや提案に感謝します:)

こんにちは、好奇心

4

2 に答える 2

0

.NETでは、FileSystemWatcherを使用できます。

于 2011-05-24T10:16:41.363 に答える
0

すぐに使用できるフィルター ドライバーを提供し、ユーザー モードですべてのロジックを記述できるCallbackFilter製品を確認しましたか?

于 2011-05-24T12:58:42.333 に答える