2009-07-10 18 views
14

私は、ファイルのオープンプロセスを傍受する可能性のある小さなプログラムを作ろうとしています。ウィンドウを傍受するウィンドウを傍受する

目的は、特定のフォルダ内のファイルをダブルクリックすると、ウィンドウがソフトウェアに通知され、その請願が処理され、ファイルのデータが返されます。

オープンメッセージを監視し、プログラムがファイルの内容を準備している間にWindowsを強制的に待機させるような別の解決策があるかもしれません。

この概念の1つのアプリケーションは、ユーザーに透過的な方法でファイルのデコードを管理することができます。 このコンテキストでは、暗号化されたファイルはディスク上にあり、ユーザーがそれをダブルクリックするかメモ帳などのアプリケーションで開くと、バックグラウンドプロセスはそのオープンイベントを傍受し、ファイルの暗号を解除し、そのファイルの内容を尋ねるアプリケーションに送ります。

これはちょっと奇妙な概念ですが、「Man In The Middle」ネットワークのコンセプトに似ているかもしれませんが、ネットワークパケットの代わりにファイルがあります。

読んでいただきありがとうございます。

答えて

10

すべてのプログラムから開くすべてのケースをカバーする最もよい方法は、file system filter driverです。しかし、これはあなたのニーズには複雑すぎるかもしれません。

+0

このようなドライバに関する情報は、どこから入手できますか? – Geo

+0

多くのリソースと情報を持つMSページにリンクしました。 –

+0

アンチウィルスソフトウェア、オンザフライ暗号化/圧縮などの方法でこのように構築されています。 –

0

Windowsには、ディスク上のファイルを暗号化するオプション(file-> properties-> advanced-> encrypt)があり、このオプションはアプリケーションに対して完全に透過的です。

おそらく、ディスクのファイル部分を暗号化するには、criptainerのようなソフトウェアを考慮する必要がありますか?

http://www.truecrypt.org/downloads(無料でオープンソース)もこのソフトウェアがありますが、試していません。

カスタムソリューションを開発することは非常に困難です。

+0

あなたはファイルシステムのフィルタドライバとしてやっているかもしれませんが、私はそれが "実行可能な"解決策ではないと思っています。時間とスキルがたくさんあるのでなければ、それを必要とする非常に具体的なものを開発しています。 –

+0

陰謀の例は、疑念を示すためだけのものでした。どの暗号化も必要ありません:) – HyLian

11

Process Explorerを使用して、自分自身をタスクマネージャに置き換えることができます。あなたが傍受するプロセスの名前と'taskmgr.exe'を置き換える

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe

:基本的にはこのようなキーを作成します。次に、実行可能ファイルへのパスを持つ'Debugger'という文字列値を追加します。例えば:

Debugger -> "C:\windows\system32\notepad.exe"

すべてのプロセスは、プロセスが実際に引数として実際のプロセスへのパスを指定して、そのプロセスのためのデバッガとして呼び出される画像名と一致していることを実行しています。

+0

私はこれが最善の方法だと信じていますが、どうすればopenfiledialogsに使用できますか?開いているファイルダイアログはcomdlg32.dllにありますか? –

4

コードインジェクションとAPIリダイレクトを使用できます。ターゲットプロセスを開始し、インターセプトしたいWindows API関数をフックするDLLを挿入します。ターゲットプロセスがOpenFile()などを呼び出していると思ったときに呼び出され、実際のAPIにコールを渡す前に好きなことをすることができます。

Google for "IATフッキング"

関連する問題