2012-02-08 7 views
-1

私は基本的なdllのフックをC言語のウィンドウで探していますが、見つけることのできるすべてのガイドはC言語でもWindowsでもありません。Cとウィンドウでフックする

(DLLは、Windowsの一部ではありませんが、サードパーティ製のプログラム)

私は原理を理解し、私はそれについて移動する方法がわかりません。

私はフックする必要があることを示すC++の既存のソースコードを持っていますが、C用のライブラリはありません。あるいは、最初からフックする方法を知っています。

+1

フッキング何ですか?ライブラリ呼び出し?例えばシステムイベント。マウスとキーボードの活動?他に何か? – Rup

+0

あなたが何をしたいのかははっきりしませんが、「フックする」とは、私があなたが意味すると思うことを意味する場合、それはあなたがしてはならない非常に壊れやすく、後方に、頑丈な練習です。フックは、注文の問題のために複数のフックがインストールされている場合は非常にひどく壊れます(さらに後でアンインストールされる場合もあります)。代わりに、1980年代のDOS TSRから間違ったソリューションを複製する方法を尋ねるのではなく、達成しようとしている目標についての質問を投稿するのはなぜですか? –

+1

C++コードは何をしますか?フッキングに関連するWindows APIは、CおよびC++で同じになります。それらはすべてCの関数です。 –

答えて

0

迂回のライセンス条項は非常に限定的です。

DLLの特定の機能を単にフックする場合は、DLLをフックするアプリケーションでDLL配置攻撃を使用するほうが安いことがよくあります。これを行うには、同じセットのエクスポートをDLLに提供し、気にしないものを転送して残りを傍受します。それがCかC++かは本当に問題ではありません。これは、多くの場合、技術的に実現可能ですが、輸出数が多いにもかかわらず、輸出されるデータに制限があります。また、使用されている呼び出し規約を知らない、または識別できない場合もあります。

あなたは必見使用は、それぞれを参照してください(起動されたアプリケーションのメインスレッドがまだ中断されている間、あなたのコードを指すように(ローダによって)IATをランチャーを書いて、あらかじめ入力を書き換えるなど、数多くの方法があるフック場合CreateProcessフラグ)。さもなければ、ジャンプを正しくするために、少なくともアセンブリの知識が必要になるでしょう。そこには自由にライセンスされた逆アセンブラエンジンがたくさんあります(例えば、マルチバイトオペコードの途中にパッチを当てたくないため)パッチの適切なオフセットを計算することができます。

コメントに書き込んだ内容(キーワード:「DLLフッキング」)を含めるように質問を再度編集することができます。 LoadLibraryによって

+0

DLLを置き換えることはオプションではありませんが、これはかなり大きく、プログラムのTOSに違反します(ネットワークパケットを監視するのではなく、フックするのがポイントです)。[Win32 CodeHook](http:// www.kbasm.com/codehook.html)ライブラリはどんな用途にも使用できますか? –

+0

"replace"はどこに書いていましたか? "DLL配置攻撃"(またはもしあれば "DLLハイジャック")が何であるかをウェブ検索で確認してください;)...おそらく、ファイルを移動する必要はなく、自分のファイルを最初にチェックされる場所に移動する必要がありますLoaderとAPIのメカニズムによって、 'LoadLibrary'が呼び出されます。そこにはすぐに使えるライブラリがたくさんありますが、どちらがあなたのニーズに合っているのかを判断することはほとんどできません(ライセンスに応じて、技術的な点から)。ところで、元の(または編集された)質問に1つ1つずつ持ち込むすべての制約を追加すると、本当にうまいでしょう。 – 0xC0000022L

0

ローディングのDLL()

これはよく悪い習慣を知られています。

悪意のあるマルウェア開発者である「魔女」や「hctiw」を検索したいことがあります。彼が非常に悪名高い理由がある - 彼はLoadLibrary()でDLLをロードした。そのような悪い習慣を控えるようにしてください。

+3

あなたは質問を読んでいないようです。 –

関連する問題