Detoursntは、1つの目標を持つ単純なプロジェクトです。元のコードを変更することなく、 NTDLL.DLLにのみ迂回を依存するようにします。
NTDLL.DLLの負荷の直後にフッキングライブラリをロードできますこのリポジトリには、マイクロソフトからの迂回路の元のGitリポジトリがサブモジュールとして添付されています。したがって、元のコードは決して触れられていません。
ntdllのみの依存関係は、すべてのコンピレーションユニットの迂回単位に強制的にインクルドされた( /FIスイッチ)cヘッダーファイルDetoursnt.hを作成することにより達成されました。このヘッダーは、detoursnt.cppで定義されたカスタム実装にKERNEL32.DLLの関数をmocksします。
次のプロジェクトの著者に感謝したい:
KERNEL32.DLL関数の実装に使用されますNTDLL.DLL関数のプロトタイプに使用元の迂回路ソースコードはgitサブモジュールとして添付されているため、それを取得することを忘れてはなりません。
git clone --recurse-submodules https://github.com/wbenny/DetoursNT
その後、Visual Studio 2017を使用してDetoursntをコンパイルします。ソリューションファイルが含まれています。他の依存関係は必要ありません。
Visual StudioでF7を押してすべてをコンパイルした後、 SampleHookDLL.dll実際にNTDLL.DLLにのみ依存していることを確認できます。

このフックDLLは、実証的な目的のためにNtTestAlert関数のみをフックします。このリポジトリには、 Sampleプロジェクトもあります。唯一の目的は、 LoadLibrary(TEXT("SampleHookDLL.dll")) 、 NtTestAlert() 、およびFreeLibrary()を呼び出して、フックが機能していることを示すことです。

このソフトウェアは、MITライセンスの下でオープンソースです。このリポジトリのライセンスファイルを参照してください。
DetoursはMITライセンスの下でライセンスされています(ライセンスのコピーは個別のGITサブモジュールに含まれています)
このプロジェクトが面白いと思うなら、私にコーヒーを買うことができます
BTC 3GwZMNGvLCZMi7mjL8K6iyj6qGbhkVMNMF
LTC MQn5YC7bZd4KSsaj8snSg4TetmdKDkeCYk