
Rust 기반 Windows PE 수동 로더로, 메모리에서 x86/x64 실행 파일을 매핑 및 실행하며, 내부 로더 동작과 PE 구조를 교육 연구 목적으로 시연합니다.
Rust PE 로더 / 수동 매핑 구현
IronPE는 x86 및 x64 PE 파일을 모두 지원하는 Rust로 작성된 최소 Windows PE 수동 로더입니다.
이 프로젝트는 C#으로 수동 PE 로더를 구현한 이전 프로젝트 **dotNetPELoader**의 Rust 재구현입니다.
IronPE의 목표는 Windows가 PE(Portable Executable)를 내부적으로 로드하는 방식을 탐구하고, 이 과정을 Rust로 구현할 수 있음을 보여주는 것입니다.
으아아아아아!
이 프로젝트가 유용하거나 유익하다고 생각되신다면 ⭐를 눌러주시면 감사하겠습니다!
이 프로젝트는 교육 및 연구 목적으로만 제공됩니다.
다음 내용을 이해하는 데 도움을 주기 위해 설계되었습니다:
이 프로젝트는 이전 구현에서 영감을 받았습니다:
해당 프로젝트에서는 .NET과 WinAPI를 사용하여 PE 로더를 구현했습니다.
IronPE는 동일한 개념을 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