
リフレクティブDLLインジェクションは、リフレクティブプログラミングの概念を用いて、ホストプロセスのメモリからライブラリのロードを実行するライブラリインジェクション技術です。
リフレクティブDLLインジェクションは、リフレクティブプログラミングの概念を利用して、ホストプロセス内のメモリからライブラリのロードを実行するライブラリインジェクション技術です。このため、ライブラリは最小限のポータブル実行可能(PE)ファイルローダーを実装することで、自身のロードを担当します。そして、ホストシステムおよびプロセスとの最小限のやり取りで、どのようにロードされ、ホストとやり取りするかを制御できます。
インジェクションは、Windows NT4からWindows 8まで、該当する場合はx86、x64、ARM上で動作します。
ライブラリをプロセスにリモートでインジェクションするプロセスは2段階に分かれます。まず、インジェクションしたいライブラリをターゲットプロセスのアドレス空間(以下、ホストプロセスと呼ぶ)に書き込む必要があります。次に、ライブラリのインポートの解決や、メモリ内の適切な場所への再配置など、ライブラリの実行時の期待が満たされるように、ライブラリをホストプロセスにロードする必要があります。
ホストプロセスでコード実行が可能であり、インジェクションしたいライブラリがホストプロセスのメモリ内の任意の場所に書き込まれていると仮定すると、リフレクティブDLLインジェクションは次のように機能します。
Visual Studio C++で'rdi.sln'ファイルを開き、Releaseモードでソリューションをビルドして、inject.exeとreflective_dll.dllを作成します。
テストするには、inject.exeを使用して、プロセスIDを介してreflective_dll.dllをホストプロセスにインジェクションします。例:
inject.exe 1234
3条項BSDライセンスの下でライセンスされています。詳細については、LICENSE.txtを参照してください。