Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/stephenfewer/reflectivedllinjection
メモリフォレンジックエクスプロイトポストエクスプロイトレッドチーミングペイロード開発
GitHubstephenfewer/reflectivedllinjection

ReflectiveDLLInjection

リフレクティブDLLインジェクションは、リフレクティブプログラミングの概念を用いて、ホストプロセスのメモリからライブラリのロードを実行するライブラリインジェクション技術です。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
3.4k817414年前Kitploit レビュー済み

概要

リフレクティブDLLインジェクションは、リフレクティブプログラミングの概念を利用して、ホストプロセス内のメモリからライブラリのロードを実行するライブラリインジェクション技術です。このため、ライブラリは最小限のポータブル実行可能(PE)ファイルローダーを実装することで、自身のロードを担当します。そして、ホストシステムおよびプロセスとの最小限のやり取りで、どのようにロードされ、ホストとやり取りするかを制御できます。

インジェクションは、Windows NT4からWindows 8まで、該当する場合はx86、x64、ARM上で動作します。

概要

ライブラリをプロセスにリモートでインジェクションするプロセスは2段階に分かれます。まず、インジェクションしたいライブラリをターゲットプロセスのアドレス空間(以下、ホストプロセスと呼ぶ)に書き込む必要があります。次に、ライブラリのインポートの解決や、メモリ内の適切な場所への再配置など、ライブラリの実行時の期待が満たされるように、ライブラリをホストプロセスにロードする必要があります。

ホストプロセスでコード実行が可能であり、インジェクションしたいライブラリがホストプロセスのメモリ内の任意の場所に書き込まれていると仮定すると、リフレクティブDLLインジェクションは次のように機能します。

  • 実行は、CreateRemoteThread()または小さなブートストラップシェルコードを介して、ライブラリのエクスポートテーブルにあるエクスポート関数であるライブラリのReflectiveLoader関数に渡されます。
  • ライブラリのイメージは現在メモリ内の任意の場所に存在するため、ReflectiveLoaderはまず自身のイメージのメモリ内での現在の場所を計算し、後で使用するために自身のヘッダーを解析できるようにします。
  • 次に、ReflectiveLoaderはホストプロセスのkernel32.dllエクスポートテーブルを解析し、ローダーに必要な3つの関数、すなわちLoadLibraryA、GetProcAddress、VirtualAllocのアドレスを計算します。
  • ReflectiveLoaderは、自身のイメージをロードするための連続したメモリ領域を割り当てます。ローダーが後でイメージを正しく再配置するため、場所は重要ではありません。
  • ライブラリのヘッダーとセクションは、メモリ内の新しい場所にロードされます。
  • 次に、ReflectiveLoaderは新しくロードされた自身のイメージのインポートテーブルのコピーを処理し、追加のライブラリをロードして、それぞれのインポートされた関数アドレスを解決します。
  • 次に、ReflectiveLoaderは新しくロードされた自身のイメージの再配置テーブルのコピーを処理します。
  • 次に、ReflectiveLoaderは新しくロードされた自身のイメージのエントリポイント関数であるDllMainをDLL_PROCESS_ATTACHで呼び出します。これでライブラリはメモリへのロードに成功しました。
  • 最後に、ReflectiveLoaderは、呼び出した初期ブートストラップシェルコードに実行を返します。または、CreateRemoteThreadを介して呼び出された場合は、スレッドが終了します。

ビルド

Visual Studio C++で'rdi.sln'ファイルを開き、Releaseモードでソリューションをビルドして、inject.exeとreflective_dll.dllを作成します。

使用方法

テストするには、inject.exeを使用して、プロセスIDを介してreflective_dll.dllをホストプロセスにインジェクションします。例:

inject.exe 1234

ライセンス

3条項BSDライセンスの下でライセンスされています。詳細については、LICENSE.txtを参照してください。

ツールをダウンロード