重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

SetWindowsHookEx(dllインジェクション)を使ってAPIフックを実装するdllを作っています。
そこそこ使えるレベルまで完成したのですが、どうしてもInit時のフックができません。

フック作動中に新しいプロセスが作られると、フックが実行されdllがアタッチされると思いますが、Init以前にアタッチさせることはできるのでしょうか?
といってもダイアログのコンストラクタまで見たいわけではなく、WM_INITDIALOG時に呼ばれるAPIが見たいのです。WM_INITDIALOG以前にアタッチさせる方法はあるのでしょうか?

A 回答 (1件)

>APIフックを実装するdllを作っています。



「API関数の実体はDLL」なので、プロセスが「このDLLを使います」とDLLにアタッチしに行かない限り、フックは実行されません。

で、DLLにアタッチしに行くのは、WM_INITDIALOGが起きた後だった筈です(未確認)

>WM_INITDIALOG以前にアタッチさせる方法はあるのでしょうか?
フックされるのはプロセスがDLLにアタッチしに行ってからなので、プロセスがDLLにアタッチする前の時点(WM_INITDIALOGが起きる前の時点)では無理なのでは?

「フックされるのはプロセスがDLLにアタッチした直後ですが、プロセスがDLLにアタッチする前にフック出来ますか?」ってのは「缶切りが缶詰の中に入っています。この缶切りで缶は開きますか?」と同じなので、どうしようもないと思います。

どうにかするとしたら「缶詰めにフタをする前」つまり「CreateProcessをフックして、プロセスの生成前から処理を追いかけて追跡する」しか…。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
CreateProcessまで監視するのは現実的でないので、WM_INITDIALOG時のフックはできないものとしてあきらめました。

お礼日時:2009/07/26 22:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!