特定のファイルを開いたプロセスをトレースする
-
04-07-2019 - |
質問
Windowsのカーネルモードから、特定のディスクで実行されるすべてのアクションを実質的に傍受して監視することができます。何らかの目的でファイルを開くと、イベントが発生します。
次に、それを開いたアプリケーションを追跡します。これは可能だと思うが、方法はわからない。
Windows Win32 APIで標準のファイル管理機能を使用しています。
事前に感謝します。
/ロバート
解決
Win32 N.APIを使用して、ファイルハンドルからpidを取得します。 15年間のFAQです...
他のヒント
Sysinternals Filemon (無料)がこれを行い、さらに優れています彼らはそれをどのように行ったかを説明します:
Windows 9xドライバーの場合、心臓 FileMonの仮想デバイス ドライバー、Filevxd.vxd。動的に ロードされ、その初期化で 経由でファイルシステムフィルタをインストールします VxDサービス、 IFSMGR_InstallFileSystemApiHook、へ の呼び出しチェーンに自分自身を挿入します すべてのファイルシステム要求。 Windows NT FileMonの中心はファイルです 作成し、 フィルターデバイスオブジェクトを接続します ターゲットファイルシステムデバイスオブジェクト FileMonはすべてのIRPを表示し、 ドライブに向けられたFastIO要求。 FileMonが開いていることを確認したら、作成または クローズ呼び出し、内部を更新します マッピングとして機能するハッシュテーブル 内部ファイルハンドルとファイルの間 パス名。呼び出しが発生するたびに ハンドルベースである、それはルックアップ 取得するハッシュテーブルのハンドル 表示のフルネーム。もし ハンドルベースのアクセスはファイルを参照します FileMonが開始される前に開かれた、FileMon その中でマッピングを見つけることができません ハッシュテーブルと単に表示されます 代わりにハンドルの値。
-アダム
Sysinternalsは、それを実行して説明するのに非常に良い仕事をしたため、古いバージョンのソースコードがまだ利用可能であるここなど、コードは十分に文書化されています(imho)。良いスタートになるかもしれません。
" handle.exe"を使用します。 Sysinternalsのアプリ。
または、実際にこれをプログラムで実行しようとしていますか?