
Rust-based Windows PE manual loader, отображающий и выполняющий x86/x64 исполняемые файлы из памяти, демонстрирующий поведение внутреннего загрузчика и структуру PE для образовательных исследований.
Реализация загрузчика PE на Rust / Ручное отображение (Manual Mapping)
IronPE — это минимальный ручной загрузчик Windows PE, написанный на Rust, поддерживающий PE-файлы архитектуры x86 и x64.
Этот проект является перереализацией на Rust моего предыдущего проекта dotNetPELoader, в котором был реализован ручной загрузчик PE на C#.
Цель IronPE — исследовать, как Windows внутренне загружает переносимые исполняемые файлы (PE), и продемонстрировать, как этот процесс может быть реализован на Rust.
Вааааааа!
Если вы находите этот проект полезным или познавательным, будем признательны за ⭐!
Этот проект предназначен только для образовательных и исследовательских целей.
Он создан, чтобы помочь понять:
Этот проект был вдохновлён моей предыдущей реализацией:
В том проекте я реализовал загрузчик PE с использованием .NET и WinAPI.
IronPE переписывает ту же концепцию на Rust, который обеспечивает лучшую безопасность памяти, сохраняя при этом доступ к низкоуровневому Windows API.
Цель этого проекта — образовательная, чтобы лучше понять:
IronPE выполняет следующие шаги для выполнения PE-файла из памяти:
VirtualAllocLoadLibrary и GetProcAddressЭтот процесс имитирует поведение загрузчика Windows PE.
PE x64 не может быть загружен загрузчиком 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