2

テキストデータをファイルに書き込むアプリがあります。私がやろうとしているのは、書き込みプロセスをフックすることです。私は、MS Detours、CreateFile、WriteFile、および WriteFileEx 関数に夢中になりました。CreateFile はこれらのテキスト ファイルの作成/オープンを適切にキャッチしますが、WriteFile のフックはキャッチしません。他の多くのものをキャッチしますが、これらはキャッチしません。フックは正常に機能しています。私はそれらをチェックしました。

また、Process Monitor は、これらの書き込み操作を WriteFile 操作 (adv 名は IRP_MJ_WRITE および FASTIO_WRITE) として表示します。これは、自分で何かを書いているときと同じです (操作フックを使用すると適切に動作します)。

何が起きてる?WriteFile 以外に何かをファイルに書き込む方法はありますか?

4

2 に答える 2

2

Windows では、 CreateFileが呼び出された後、 CreateFileMappingおよびMapViewOfFile関数を使用してファイルをメモリ マップできます。これが完了すると、memcpyなどの任意のメモリ関数を使用してファイルに書き込むことができます。小さなテキスト ファイルの場合、Windows は既定でこれを行います。これは、おそらくあなたのケースで起こっていることです。

于 2012-06-16T12:41:45.847 に答える
2

これは Microsoft Detours ソリューションではありませんが、Deviare フック コンソールを試して、そこで関数が呼び出されるかどうかを確認できます。これは C# で書かれており、コンソールのソース コードはディストリビューションに含まれています。C++ への移植は非常に簡単で、自由に使用できます (Deviare コンポーネントが読み込まれるとスプラッシュのみが表示されます)。ダウンロードはこちらから入手できますhttp://www.nektra.com/products/deviare-api-hook-windows/

于 2012-06-18T00:50:14.907 に答える