createfileとopenfile以外にファイルハンドルを取得するためのWindows APIはありますか?

StackOverflow https://stackoverflow.com/questions/13806

  •  08-06-2019
  •  | 
  •  

質問

アプリケーションが書き込んでいるログ ファイルをスヌープしようとしています。

MSR の迂回ライブラリを使用して createfile を正常にフックしましたが、スヌープしたいファイルで createfile が呼び出されないようです。openfile をフックしても同じ結果が得られました。

私は経験豊富な Windows/C++ プログラマーではない (または経験豊富なプログラマーですら) ので、私の最初の 2 つの考えは、API をフックする前にアプリケーションが createfile を呼び出すか、ファイルの作成/ハンドルを取得するための他の API があるのではないかということでした。 。

編集:2 つの素晴らしい返信をありがとうございました。有益だったので、codingthewheel の返信に賛成票を投じますが、十分な担当者がいません:(

役に立ちましたか?

解決

Sysinternal のものを使用できます ファイルモン. 。これは、どのファイル関連システム呼び出しが行われているか、パラメーターとは何かを正確に伝えることができる優れたモニターです。

このアプローチは、API 呼び出しをフックするよりもはるかに簡単で、煩わしさがはるかに少ないと思います。

他のヒント

役に立つかもしれないリンクは次のとおりです。

C# および C++ を使用したゲリラ スタイルのファイル監視

CreateFile APIに触れずにファイルを作成することは可能ですが、聞いてもいいですか? どのような DLL インジェクション方法を使用しているか?Windows フックなどを使用している場合、ターゲット アプリケーションが初期化されるまで DLL はインストールされず、CreateFile への初期の呼び出しを逃すことになります。一方、DetourCreateProcessWithDll などを使用している場合は、アプリケーションの起動コードが実行される前に CreateFile フックをインストールできます。

私の経験では、C および C++ ライブラリ、サードパーティ ライブラリなどを通じて開かれたファイルを含め、作成/開かれたファイルの 99.9% で CreateFile が呼び出されます。おそらく、CreateFile を介してルーティングされない文書化されていない DDK 関数がいくつかあるのかもしれませんが、一般的なログ ファイルの場合、それは疑わしいと思います。

プロセスモニター sysinternals からも役立つかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top