質問: WINDOWSのDLLのラッパーDLLを作りたいと考えています。例としてGDI32.DLLなどのラッパーです。GDI32.DLLは多くの関数等を持っていますが、そのうちの一部の関数をラップしたいと思っています。例としてTextOutのみをラップする。通常、GDI32.DLLをそのままラップするにはすべてのAPIのインターフェースをラップするDLLに記述する必要がありますが、一部の関数のみをラップする方法はあるでしょうか?
回答: インポートセクションを操作して任意のAPIをフックすることができます。 ただし、少々難解でデバッグしずらいため、私もMessageBoxA/Wなどの単純なAPIしかフックしたことありません。 ※フック解除せずにフックプログラムが終了するとOSごとハングすることもたるので注意を。