123
Mhook

Mhook

この分野に手を出したら、Microsoft ResearchのDetoursがAPIフッキングに関してベンチマークを設定していることをすでに知っているでしょう。
この分野に手を出したら、Microsoft ResearchのDetoursがAPIフッキングに関してベンチマークを設定していることをすでに知っているでしょう。じゃあ、すぐに比較してみませんか?デトルズVS.MHOOK Detoursは非商用ライセンスで無料で利用できますが、x86プラットフォームのみをサポートしています。Detoursは商用利用向けにライセンスすることもできます。これにより、x64を完全にサポートすることもできますが、NDAに署名した後にのみライセンス条件を確認できます。Mhookは、x86およびx64をサポートするMITライセンスの下で自由に配布されます。迂回は、実行中のアプリケーションへのフックの添付を公式にサポートすることを避けます。もちろん、あなたはそれを自由に行うことができます-しかし、どこかでランダムなクラッシュを引き起こすことになった場合、あなたは自分自身を責めることができます。Mhookは、実行中のアプリケーションでフックを設定および削除できるようにすることを目的としていました。結局のところ、それは実際の世界で必要なものです。別のスレッドによって実行中のコードを上書きしないように最善を尽くします。Detoursは、トランザクションフックおよびフック解除をサポートしています。つまり、オールオアナッシングのアプローチで、同時に多数のフックを設定します。フックは、すべてを設定できる場合にのみ設定されます。そうでない場合、ライブラリは変更をロールバックします。Mhookはこれを行いません。最後に、Mhookは、使用するトランポリンのメモリを管理することに関しては非常に面倒です。迂回路は、必要に応じてメモリブロックを割り当て、結果のデータ領域を使用して、収まる限り多くのトランポリンを格納します。一方、Mhookは、設定されるフックごとにVirtualAllocの呼び出しを1つ使用します。VirtualAllocは、Mhookが呼び出すたびにプロセスの仮想アドレス空間から64Kを取得するため、すべてのフックに必要なストレージは100バイト未満です。これは非常に無駄です。(実際に割り当てられるメモリは1ページであり、これも非常に無駄です。)しかし、最終的には、アプリケーションで非常に多くのフックを設定しない限り、これはおそらく重要ではありません。また、これは非常に簡単に修正できます。

Mac用のMhookに代わるオープンソースライセンス