開始しているプロセスでCoCreateInstanceへのすべての呼び出しを検出しようとしています(理想的には、子プロセスでも呼び出しを検出できます)。
これを実現するために、Windows 7 で Microsoft Visual Studio 2008 を使用して、標準ole32.dll
ライブラリ内の 1 つを除くすべての呼び出しを転送するプロキシ DLL を作成します (例:
Intercepted: Windows Hacking via DLL Redirectionなど) 。結果の DLL は問題ないように見えますが、既存のプログラム (標準のActiveX コントロール テスト コンテナー (tstcon32.exe)をテスト アプリケーションとして使用しています) にプロキシ DLL を取得させることができません。私が何をしても、プログラムはProcess ExplorerC:\Windows\SysWow64\ole32.dll
に従って常にピックアップしているようです。これまでにいくつかのことを試しました:
- プロキシ DLL を含むディレクトリを先頭に追加し
PATH
、プログラムを呼び出します。効果はないようでした。 - プロキシ DLL を、呼び出されたプログラムと同じディレクトリにコピーします。運がない。
- Dynamic-Link Library Redirection の
.local
記事で説明されているように、呼び出されたプログラムと同じディレクトリにファイルを作成し、プロキシ DLL を同じディレクトリに配置しますが、どちらも機能しませんでした。しかし、その後、これが最近の Windows バージョンでは機能しなくなったことを読みました。さらに、はレジストリ設定によると「既知の DLL」であるため、ベースのリダイレクトはおそらく機能しません。ole32.dll
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
.local
- マニフェストを使用したDLL リダイレクトの質問などで説明されているように、マニフェスト ベースのリダイレクトを使用しますが、それも効果がないようです。ただし、このアプローチは自明ではないように思われるため、何か間違ったことをした可能性があります。
ole32.dll
スタブ DLL の使用など、呼び出しを標準 DLL にリダイレクトした経験のある人はいますか? どのようにしてアプリケーションにスタブ DLL を取得させましたか?