Rust PE 加载器 / 手动映射实现
IronPE 是一个用 Rust 编写的最小 Windows PE 手动加载器,支持 x86 和 x64 PE 文件。
该项目是我之前项目 dotNetPELoader 的 Rust 重实现,该项目用 C# 实现了一个手动 PE 加载器。
IronPE 的目标是探索 Windows 内部如何加载可移植可执行文件 (PE),并演示如何用 Rust 实现这一过程。
Waaaahhhhhhh!
如果您觉得这个项目有用或有趣,欢迎点个 ⭐!
本项目仅用于 教育和研究目的。
旨在帮助理解:
该项目受我之前实现的启发:
在那个项目中,我使用 .NET 和 WinAPI 实现了一个 PE 加载器。
IronPE 用 Rust 重写了相同的概念,Rust 提供了更好的内存安全性,同时仍然允许低层 Windows API 访问。
本项目的目的是 教育性的,目的是更好地理解:
IronPE 执行以下步骤从内存中执行 PE 文件:
VirtualAlloc 分配内存LoadLibrary 和 GetProcAddress 解析 导入这个过程模拟了 Windows PE 加载器的行为。
x64 PE 不能被 x86 加载器加载,反之亦然。
要求:
cargo, rustc)构建项目:
cd IronPE
build.bat
IronPE.exe --coffee
IronPE.exe --x86 <x86_pe_file>
IronPE.exe --x64 <x64_pe_file>
示例:
IronPE.exe --x86 Win32\mimikatz.exe
IronPE.exe --x64 x64\mimikatz.exe