用Rust编写的最小限度Windows PE手动加载器。
仓库文件导航
IronPE——用Rust编写的最小限度Windows PE手动加载器。
Rust PE加载器/手动映射实现
IronPE 是一个用 Rust 编写的 Windows PE 手动加载器,适用于 x86 和 x64 的 PE 文件。
这个项目是我之前项目 dotNetPELoader 的 Rust重实现 ,之前的项目用C#实现了手动PE加载器。
IronPE 的目标是探索 Windows 如何在内部加载可执行文件,并演示如何在 Rust 中实现这一过程。
如果你觉得这个项目有用或有⭐信息,非常感谢!
免责声明
本项目 仅用于教育和研究目的 。
其设计目的是帮助理解:
- Windows PE 内部结构
- 手动装弹技术
- 逆向工程概念
特色
- 手动PE装载
- 剖面映射
- 基地迁移
- 导入解析
- 从内存中执行PE
- x86 和 x64 PE 支持
背景
这个项目的灵感来自我之前的实现:
- dotNetPELoader (C#)
在那个项目中,我用.NET 和 WinAPI 实现了一个 PE 加载器。
IronPE 在 Rust 中重写了相同的概念, Rust 提供了更好的内存安全,同时仍允许低级别的 Windows API 访问。
该项目的目的是 教育 性质,以便更好地理解:
- PE文件结构
- Windows 加载程序行为
- 手动PE映射技术
工作原理
IronPE 执行以下步骤从内存中执行 PE 文件:
- 将PE文件读入内存
- 解析PE头部
- 内存分配方式如下
VirtualAlloc - 复制PE的头部和节
- 应用 基地迁移
- 用 和 解析 导入
LoadLibraryGetProcAddress - 向 原始入口点(OEP )执行
该过程模拟了 Windows PE 加载器的行为。
x64 的 PE 不能被 x86 加载器加载,反之亦然。
建造
要求:
- 锈蚀(,
cargorustc) - 窗户
构建项目:
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
演示(运行 mimikatz)
x86


x64


未匹配加载器和PE架构(错误)

📌 版权声明
文章作者:大神K
版权说明:本文为原创内容,转载请注明出处。