実際には、独自のプロセスで API をフックする方がはるかに簡単です (実際、別のプロセスをフックする場合は、とにかくそのプロセスに DLL を挿入する必要があるため、基本的に独自のプロセスをフックする場合は、その手順をスキップできます)。使用しているライブラリのバグである可能性があります。Microsoft Detours を試すか、自分でメモリにパッチを当ててください。実際にはそれほど難しくありません。このテーマに慣れていない場合は数時間かかります。
注意が必要なのは、一部の C++ コンパイラは場合によっては (デバッグ ビルドだと思います)、ジャンプ スタブなどを使用し、フック プロセスに干渉する可能性があることです。その場合、フックするときに特別な注意を払う必要があります - MS Detours はおそらくこれを適切に行います。成功に影響する場合は、デバッグ/リリース ビルドを試すことができます。つまり、API の適切なアドレスを取得するということです。関数が WinAPI の場合のように DLL 内にある場合、LoadLibrary と GetProcAddress を使用すると、正しいアドレスを取得していることを確認できます。
余談ですが、APIフックは、テスト用のモック/スタブを回避するための適切な方法ではないと思いますが、機能するはずです。
フッキングがどのように機能するかについてもっと興味がある場合は、ここで私の論文をチェックしてください: http://lkm.fri.uni-lj.si/zoranb/research/berdajs-bosnic%20SPE%202011.pdf