Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
sRDI — Reflective DLL Injection のシェルコード実装。DLL を位置独立シェルコードに変換します。 | Kitploit
ツール/GitHubGitHub/monoxgas/srdi
メモリフォレンジックエクスプロイトシェルコードポストエクスプロイトペネトレーションテストレッドチーミングペイロード開発
GitHubmonoxgas/srdi

sRDI

Reflective DLL Injection のシェルコード実装。DLL を位置独立シェルコードに変換します。

リポジトリを見る
2.5k4974年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

sRDI - Shellcode Reflective DLL Injection

sRDI は、DLL ファイルを位置独立シェルコードに変換することを可能にします。適切なセクション権限、TLS コールバック、健全性チェックをサポートする、完全機能の PE ローダーとなることを目指しています。これは、パックされた DLL に取り付けられたシェルコード PE ローダーと考えることができます。

機能は、次の 2 つのコンポーネントによって実現されます。

  • PE ローダー実装 (RDI) をシェルコードにコンパイルする C プロジェクト
  • DLL、RDI、およびユーザーデータをブートストラップとともに結合する変換コード

このプロジェクトは、以下の要素で構成されています。

  • ShellcodeRDI: DLL ローダーのシェルコードをコンパイルします
  • NativeLoader: 必要に応じて DLL をシェルコードに変換し、メモリに注入します
  • DotNetLoader: NativeLoader の C# 実装
  • Python\ConvertToShellcode.py: DLL をその場でシェルコードに変換します
  • Python\EncodeBlobs.py: コンパイルされた sRDI ブロブを静的埋め込み用にエンコードします
  • PowerShell\ConvertTo-Shellcode.ps1: DLL をその場でシェルコードに変換します
  • FunctionTest: デバッグテスト用に sRDI C 関数をインポートします
  • TestDLL: ロード時およびその後に呼び出すための 2 つのエクスポート関数を含む DLL の例

DLL は RDI でコンパイルする必要はありませんが、この手法は相互互換性があります。

使用例

使用前に、Reflective DLL Injection とその目的について理解しておくことをお勧めします。

Python を使用して DLL をシェルコードに変換する

root@kitploit:~
from ShellcodeRDI import *

dll = open("TestDLL_x86.dll", 'rb').read()
shellcode = ConvertToShellcode(dll)

C# ローダーを使用して DLL をメモリにロードする

root@kitploit:~
DotNetLoader.exe TestDLL_x64.dll

Python スクリプトで DLL を変換し、Native EXE でロードする

root@kitploit:~
python ConvertToShellcode.py TestDLL_x64.dll
NativeLoader.exe TestDLL_x64.bin

PowerShell で DLL を変換し、Invoke-Shellcode でロードする

root@kitploit:~
Import-Module .\Invoke-Shellcode.ps1
Import-Module .\ConvertTo-Shellcode.ps1
Invoke-Shellcode -Shellcode (ConvertTo-Shellcode -File TestDLL_x64.dll)

フラグ

PE ローダーコードは flags 引数を使用して、ロードロジックのさまざまなオプションを制御します。

  • SRDI_CLEARHEADER [0x1]: ターゲット DLL の DOS ヘッダーと DOS スタブは、ロード時に (e_lfanew を除いて) 完全にヌルバイトで消去されます。これにより、ベースアドレスを疑似 HMODULE として指定する場合、標準の Windows API で問題が発生する可能性があります。
  • SRDI_CLEARMEMORY [0x2]: ロードされたモジュール (DllMain およびエクスポート) の関数を呼び出した後、DLL データはメモリからクリアされます。これは、モジュール (スレッド / GetProcAddressR) からのコードの実行を継続する予定がある場合、危険です。
  • SRDI_OBFUSCATEIMPORTS [0x4]: IAT パッチの開始前に、モジュール内のインポートの順序がランダム化されます。さらに、フラグの上位 16 ビットを使用して、次のインポートを処理する前に一時停止する秒数を格納できます。たとえば、flags | (3 << 16) は、インポートごとに 3 秒間一時停止します。
  • SRDI_PASS_SHELLCODE_BASE [0x8]: エクスポートされた関数に指定されたユーザーデータを渡す代わりに、sRDI は現在実行中のシェルコードブロックのベースアドレスを渡します。これは、より高度なモジュール内での自己クリーンアップに役立ちます。

ビルド

このプロジェクトは、Visual Studio 2019 (v142) および Windows SDK 10 を使用してビルドされています。Python スクリプトは Python 3 で記述されています。

Python および Powershell スクリプトは、次の場所にあります。

  • Python\ConvertToShellcode.py
  • PowerShell\ConvertTo-Shellcode.ps1

プロジェクトのビルド後、他のバイナリは次の場所に配置されます。

  • bin\NativeLoader.exe
  • bin\DotNetLoader.exe
  • bin\TestDLL_<arch>.dll
  • bin\ShellcodeRDI_<arch>.bin

いずれかのツール内の静的ブロブを更新する場合は、次のようにします。

root@kitploit:~
> python .\lib\Python\EncodeBlobs.py -h
usage: EncodeBlobs.py [-h] solution_dir

sRDI Blob Encoder

positional arguments:
  solution_dir  Solution Directory

optional arguments:
  -h, --help    show this help message and exit

> python lib\Python\EncodeBlobs.py C:\code\srdi

[+] Updated C:\code\srdi\Native/Loader.cpp
[+] Updated C:\code\srdi\DotNet/Program.cs
[+] Updated C:\code\srdi\Python/ShellcodeRDI.py
[+] Updated C:\code\srdi\PowerShell/ConvertTo-Shellcode.ps1

代替プロジェクト

私のコードがひどいと感じた場合、または別のメモリ PE ローダープロジェクトを探している場合は、以下をチェックしてみてください。

  • https://github.com/fancycode/MemoryModule - おそらく最もクリーンな PE ローダーの 1 つで、優れた参考資料です。
  • https://github.com/TheWover/donut - .NET アセンブリを変換したいですか? それとも JScript?
  • https://github.com/hasherezade/pe_to_shellcode - ポリモーフィックな PE+シェルコードのハイブリッドを生成します。
  • https://github.com/DarthTon/Blackbone - 多くのメモリハッキング/フックプリミティブを備えた大規模なライブラリ。

クレジット

このプロジェクトの基礎は、Stephen Fewer による元のプロジェクトに由来する Dan Staples による "Improved Reflective DLL Injection" から派生しています。

C コードをシェルコードとしてコンパイルするためのプロジェクトフレームワークは、Mathew Graeber の研究 "PIC_BindShell" から取得されています。

ツールをダウンロード